知识卡片

Page Cache统一了内核缓存机制

专业/工作 · 551.e

内容

早期Linux内核里Page Cache(缓存物理页)和Buffer Cache(缓存磁盘块)是两个独立的缓存,同一个磁盘块可能同时存在于两处,既浪费内存又要额外同步。从2.4.10版本内核开始,Buffer Cache被并入Page Cache内部实现,一个4KB的page按块大小不同可以包含1~8个缓冲区,两种缓存需求被统一到同一套数据结构里管理。Linux不会让空闲内存真正空闲,而是尽量把它用作Page Cache,只在有新的内存请求时才逐步释放,这就是为什么free命令看到的”可用内存”总是偏少——大部分被用来加速文件访问了。发散:这是一个”两套语义相近但接口不同的缓存最终被合并”的典型重构案例,说明系统内部长期存在的重复概念迟早会被统一,代价是要接受一次架构调整的复杂度。

参考来源

《Linux开源存储全栈详解从Ceph到容器存储》第3章《Linux存储栈》