Linux 使用缓存(cache / buffering)主要是为了提升性能、减少磁盘 I/O、提高系统整体效率。可以从几个层面理解:
1. 磁盘很慢,CPU 和内存很快
- 磁盘(尤其是 HDD)访问速度比内存慢 几个数量级
- 如果每次读文件、写文件都直接访问磁盘,系统会非常卡
缓存的作用:把常用数据放在内存里,下次直接用,避免重复读盘。
2. 页缓存(Page Cache)
Linux 中最重要的缓存是 页缓存(page cache):
- 读文件时:
- 数据先读到内存(page cache)
- 再次读同一文件,直接从内存返回
- 写文件时:
- 先写到 page cache(write-back)
- 后台线程定期刷回磁盘
✅ 结果:
3. 减少重复 I/O
很多程序会:
- 反复读配置文件
- 多次访问同一库文件
- 编译时大量读头文件
没有缓存:
磁盘 → 程序 → 磁盘 → 程序
有缓存:
内存 → 程序
4. 合并写操作(减少磁盘磨损)
写缓存可以:
对 SSD / HDD 都更友好。
5. 利用“空闲内存”
Linux 的设计哲学:
空闲的内存就是浪费的内存
所以:
你看到的:
free -h
buff/cache: 很大
这是正常的、健康的
6. 文件系统 & inode 缓存
除了数据,Linux 还缓存:
让 ls、stat、find 更快。
7. 没有缓存会怎样?
- 系统明显变慢
- 磁盘占用 100%
- 多任务时容易卡死
- 笔记本更耗电、更热
简单总结
Linux 用缓存是因为:
- 内存比磁盘快得多
- 缓存能显著减少 I/O
- 提高响应速度
- 更好利用空闲内存
- 不缓存才是浪费
如果你愿意,我也可以讲:
- page cache vs buffer cache 区别
- 为什么
free 里 cache 不算是“用了”
- 如何手动清缓存(以及为什么通常不该清)