【Linux 内核知识梳理 6】Linux 中的冷热页面

在CPU 访问内存时,因于这个操作比较慢,为了加快速度,
根据本地性原则,CPU在访问主内存时的时候会把附近的一块数据都加载到CPU 的Cache 里,之后读这与这块数据都是在Cache 里做。


Linux 本来有伙伴系统分配内存页,为了加快单个内存页的分配,
Linux 在每个 inode 里 为每个CPU 分配了一个per_cpu_pageset (暂且叫页缓存吧)。
每个 页缓存包含一个冷页缓存 和 一个热页缓存。

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

这主要是因为 内核 用free_page 释放单个内存页的时候会调用 free_hot_page。
刚释放的内存页大概率还在CPU 的Cache 里,也就是说热页缓存里的页很可能还在CPU 的 Cache里,
所以申请热页缓存并且立即使用会直接访问 CPU 的Cache 速度会比较快。

其他情况使用冷页缓存,冷缓存里的页在主内存里,需要重新加载到CPU 的Cache ,速度会慢一些。

你可能感兴趣的:(Linux内核)