Linux 页缓存(Page Cache) 是 Linux 内核用来加速文件 I/O 和内存管理的一种核心机制。
简单来说:页缓存是把磁盘上的文件数据,临时存放在内存(RAM)里,以“页(page,通常 4KB)”为单位进行管理。
磁盘速度远慢于内存。如果每次读文件都直接访问磁盘,系统会非常慢。
页缓存的作用是:
应用程序 read()
↓
内核先查页缓存
↓
命中(Cache Hit) → 直接从内存返回
未命中(Cache Miss) → 从磁盘读入页缓存,再返回
应用程序 write()
↓
数据写入页缓存(标记为脏页 Dirty Page)
↓
稍后由内核刷回磁盘(pdflush / writeback)
写操作默认是 写缓存,不是直接写磁盘
| 类型 | 说明 |
|---|---|
| 页缓存 | 文件数据缓存 |
| Buffer Cache | 早期块设备缓存(现在已合并到页缓存) |
| 内存映射 | 基于页缓存实现 |
| CPU Cache | 硬件级,完全不同 |
free -h
示例:
total used free buff/cache
Mem: 16G 4G 2G 10G
buff/cache 中大部分是 页缓存查看更细:
cat /proc/meminfo | grep -i cache
以下情况会回收:
echo 3 > /proc/sys/vm/drop_caches# 清理页缓存
sync
echo 1 > /proc/sys/vm/drop_caches
如果你愿意,我也可以讲:
mmap 的关系