zoukankan      html  css  js  c++  java
  • 内存管理中提到的hot cold page

    所谓冷热是针对处理器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

  • 相关阅读:
    提高samba的传输速度[转载]
    centos安装samba,与其它OS共享文件[转载]
    解决*unix系统下Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    java在windows cmd中乱码
    mysql 主从复制配置
    mysql 开启binlog
    关于mysql varchar类型的长度
    MyISAM的表锁
    html页面跳转不保存上个页面的记录
    golang 下载所有依赖
  • 原文地址:https://www.cnblogs.com/xingmuxin/p/9803944.html
Copyright © 2011-2022 走看看