Linux 缓存(Cache)机制是操作系统用来提升性能、减少磁盘 I/O 的重要原理。下面从“是什么、为什么、怎么工作、怎么查看、如何清理”几个角度讲清楚。
在 Linux 中,常说的“缓存”主要指:
在
free命令里你看到的:
buff/cache= buffer + cache
内存速度 >> 磁盘速度
所以:
能不从磁盘读,就绝不从磁盘读
进程读文件
↓
检查 Page Cache 是否有?
↓
有 → 直接返回(cache hit)
没有 → 从磁盘读 → 放入 cache → 返回
✅ 第一次慢,第二次快
进程写文件
↓
写入 Page Cache(不立即写磁盘)
↓
标记为 dirty(脏页)
↓
后台线程定期刷盘(pdflush / writeback)
✅ 写操作“看起来”很快
Linux 遵循原则:
缓存能占多少占多少,但内存紧张时自动回收
free -h
看 buff/cache
内存使用明细
cat /proc/meminfo
关注:
✅ 会,但不是问题
所以:
- 内存显示快满了 ≠ 内存不够
- 真正看的是
available
# 清理 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 是“浪费”
✅ 是“聪明地使用”
Linux 缓存的本质:用空闲内存换磁盘 I/O 性能,内存紧张时自动释放。
如果你愿意,我也可以讲:
你想深入哪一块?