Linux 的缓存(Cache)机制是内核用来提升系统性能的重要手段,核心思想是**“用内存换速度”**:把磁盘中的数据先放到内存里,下次访问就快很多。
下面从是什么、怎么工作、关键机制、如何查看和清理几个方面讲清楚。
在 Linux 中,常见的“缓存”主要有两类:
示例:
cat bigfile.txt
第一次慢(读磁盘),第二次快(读内存)
在 free 命令里你会看到:
buff/cache = buffer + cache用户程序
↓
VFS
↓
Page Cache ← 命中?直接返回
↓ 未命中
磁盘 I/O
↓
写入 Page Cache
↓
返回用户
Linux 默认是写回(write-back)模式:
用户 write()
↓
写入 Page Cache
↓
标记为 dirty(脏页)
↓
后台 flusher 线程定时写回磁盘
好处:
风险:
dirty_expire_centisecs)dirty_ratio)sync相关参数:
/proc/sys/vm/dirty_ratio
/proc/sys/vm/dirty_background_ratio
当内存不足时,Linux 会:
✅ 所以:cache 内存是可回收的,不算“真正占用”
free -h
关注:
buff/cache
available
cat /proc/meminfo
重点:
# 清理 pagecache
echo 1 > /proc/sys/vm/drop_caches
# 清理 dentries/inodes
echo 2 > /proc/sys/vm/drop_caches
# 全部清理
echo 3 > /proc/sys/vm/drop_caches
⚠️ 生产环境慎用,会导致性能瞬间下降
❌ “buff/cache 占用太多,系统卡了” ✅ 其实它是被系统聪明地利用
❌ “free 内存越少越危险” ✅ Linux 的设计就是:空闲内存 = 浪费内存
Linux 缓存通过 Page Cache + 写回机制,把磁盘 I/O 变成内存操作,大幅提升性能;缓存内存可回收,是系统正常工作的一部分。
如果你愿意,我也可以讲: