Linux 用缓存(cache)主要是为了弥补“CPU 太快、磁盘太慢”的差距,提升系统性能和效率。可以从几个层面理解:
如果每次读文件、写文件都直接访问磁盘,系统会非常卡。
缓存把常用数据放在内存里,CPU 直接读内存,速度提升几个数量级。
Linux 会把读过文件的内容缓存在内存中:
好处:
例如:
cat bigfile
cat bigfile # 第二次明显更快
写文件时,Linux 不一定立刻写盘:
好处:
风险:
fsync() / syncLinux 的设计哲学:
空闲的内存就是浪费的内存
所以:
你看到的 free 命令里:
buff/cache
不是“被占用”,而是可随时让出的内存。
除了文件缓存,Linux 还有:
Linux 用缓存,是为了用“快的内存”掩盖“慢的磁盘”,让系统又快又稳,同时不浪费内存。
如果你愿意,我也可以讲:
echo 3 > /proc/sys/vm/drop_caches