温馨提示×

为什么linux要用缓存

小樊
44
2026-10-06 13:00:45
栏目: 智能运维

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 还缓存:

  • 目录结构
  • inode 信息
  • 权限、文件元数据

让 ls、stat、find 更快。


7. 没有缓存会怎样?

  • 系统明显变慢
  • 磁盘占用 100%
  • 多任务时容易卡死
  • 笔记本更耗电、更热

简单总结

Linux 用缓存是因为:

  • 内存比磁盘快得多
  • 缓存能显著减少 I/O
  • 提高响应速度
  • 更好利用空闲内存
  • 不缓存才是浪费

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

  • page cache vs buffer cache 区别
  • 为什么 free 里 cache 不算是“用了”
  • 如何手动清缓存(以及为什么通常不该清)

0 踩