内存管理中的cold page和hot page, 冷页 vs 热页

所谓冷热是针对处理器cache来说的,冷就是页不大可能在cache中,热就是有很大几率在cache中。

网上还有一种说法:冷页就是冷的页,热页就是热点的页,解释的真好 :)


cold page和hot page的概念可以参考LWN的一片文章http://lwn.net/Articles/14768/

2.5.45内核,Martin Bligh和Andrew Morton以及其他人提交了一个内核分配器patch,引入了hot-n-cold pages的概念,这个概念本身是和现在处理器架构息息相关的。

以往我们认为系统内存是存储数据最快的地方。事实上并不是这样,最快的地方是处理器内部的cache。因此最近几年,有很多内核优化方法是尽量利用处理器cache,避免使用主存。hot-cold page就是其中之一。

处理器cache保存着最近访问的内存。kernel认为最近访问的内存很有可能存在于cache之中。hot-cold page patch因此为per-CPU建立了两个链表(每个内存zone)。当kernel释放的page可能是hot page时(可能在处理器cache中),那么就把它放入hot链表,否则放入cold链表。


当kernel需要分配一个page时,新分配器通常会从per-CPU的hot list获取页面,甚至我们获得的页面马上就要写入新数据的情况下,仍然能获得较好的速度。当然也有些情况下,申请hot page不会获得性能上的提高,只要申请cold page就可以了。比如DMA读操作需要的内存分配,设备会直接修改内存并且无效相应的cache。所以内核分配器提供了GFP_COLD分配标记来声明从cold page链表分配内存。

使用per-CPU page链表也削减了锁竞争,提高了性能。

Andrew Morton 测试了这个patch,在不同环境下获得了%1 ~%12不等的性能提升,因此Linus接受了这个patch



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值