linux内核的冷热页分配器

先说说cpu的cache,和cpu的cache比起来访问主内存是非常慢的,为了加快速度根据本地性原则,cpu在访问主内存的时候会把附近的一块数据都加载到cpu的cache里,之后读写这块数据都是在cache里做的。

linux本来有伙伴系统分配内存页,为了加快单个内存页的分配linux在每个node里为每个cpu分配了一个per_cpu_pageset(暂且叫他页缓存吧)。每个页缓存包含一个冷页缓存和一个热页缓存。这两个用法有什么区别呢。

  1. 如果申请完一个内存页就立刻用来写数据,用热页缓存。
  2. 如果申请完暂时用不到或者给DMA用,用冷页缓存。

这主要是因为内核用free_pages释放单个内存页的时候会调用free_hot_page。刚释放的内存页大概率还在cpu的cache里,也就是说热页缓存里的页很可能还在cpu的cache里,所以申请热页缓存并且立即使用会直接访问cpu的cache速度会比较快。其他情况就用冷页缓存,冷页缓存里的页在主内存里,需要重新加载到cpu的cache,速度会慢一些。

 

参考:

  • understanding linux kernel
  • https://lwn.net/Articles/14768/

转载于:https://www.cnblogs.com/4a8a08f09d37b73795649038408b5f33/p/10448733.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值