温馨提示×

什么是linux页缓存

小樊
44
2026-10-27 01:34:14
栏目: 智能运维

Linux 页缓存(Page Cache) 是 Linux 内核用来加速文件 I/O 和内存管理的一种核心机制。

简单来说:页缓存是把磁盘上的文件数据,临时存放在内存(RAM)里,以“页(page,通常 4KB)”为单位进行管理。


一、为什么需要页缓存?

磁盘速度远慢于内存。如果每次读文件都直接访问磁盘,系统会非常慢。

页缓存的作用是:

  • 减少磁盘访问
  • 提高读写性能
  • 统一内存与文件管理

二、页缓存的基本原理

1. 读文件时

应用程序 read()
   ↓
内核先查页缓存
   ↓
命中(Cache Hit) → 直接从内存返回
未命中(Cache Miss) → 从磁盘读入页缓存,再返回

2. 写文件时

应用程序 write()
   ↓
数据写入页缓存(标记为脏页 Dirty Page)
   ↓
稍后由内核刷回磁盘(pdflush / writeback)

写操作默认是 写缓存,不是直接写磁盘


三、页缓存的几个关键点

1. 以“页”为单位

  • 通常一页 = 4 KB
  • 文件被切成多个 page 放入缓存

2. 缓存的是“文件内容”

  • 普通文件
  • 块设备文件
  • mmap 映射的文件

3. 使用内存但不“独占”

  • 页缓存使用的内存是 可回收的
  • 内存紧张时,内核会回收干净页

四、页缓存 vs 其他缓存

类型 说明
页缓存 文件数据缓存
Buffer Cache 早期块设备缓存(现在已合并到页缓存)
内存映射 基于页缓存实现
CPU Cache 硬件级,完全不同

五、如何查看页缓存?

free -h

示例:

              total  used  free  buff/cache
Mem:           16G   4G    2G     10G
  • buff/cache 中大部分是 页缓存

查看更细:

cat /proc/meminfo | grep -i cache

六、页缓存的回收

以下情况会回收:

  • 内存不足(kswapd)
  • 文件被删除且无人使用
  • 系统调用:echo 3 > /proc/sys/vm/drop_caches
# 清理页缓存
sync
echo 1 > /proc/sys/vm/drop_caches

七、页缓存的重要性

  • 数据库、Web 服务器性能依赖它
  • 大量顺序/随机读都能受益
  • 合理使用内存比“空闲内存”更重要

如果你愿意,我也可以讲:

  • 页缓存与 mmap 的关系
  • 数据库为什么要绕过页缓存(O_DIRECT)
  • 页缓存对性能调优的影响

0 踩