在 Linux 中,“缓存机制”通常不是指某一种技术,而是一整套利用内存来加速磁盘 / 网络 / 计算访问的机制。下面从核心概念 → 主要机制 → 关键原理 → 常见误区来讲。
用空闲内存换性能
内存比磁盘快几个数量级,Linux 会尽量把“可能再用到的数据”放在内存里。
作用:缓存文件内容(磁盘数据)
用户进程
↓
VFS
↓
Page Cache(内存)
↓
磁盘
特点
作用:缓存块设备元数据 / 裸设备
你在
free命令里看到的buffers就是它
作用:加速路径解析
ls /a/b/c/file
✅ 极大加速 stat()、open()
作用:缓存内核常用对象
工具查看:
slabtop
Linux 写文件不是立刻写盘
| 模式 | 行为 |
|---|---|
| writeback | 先写内存,后台异步刷盘(默认) |
| sync | 立刻写盘 |
| direct IO | 绕过缓存 |
刷盘由这些控制:
/proc/sys/vm/dirty_ratio
/proc/sys/vm/dirty_background_ratio
free memory ↓
→ 回收 page cache
→ 不杀进程(除非 OOM)
free -h
total used free shared buff/cache available
Mem: 16G 4G 2G 200M 10G 11G
buff/cache ≈ Page Cache + Bufferavailable ≈ 真正可用内存✅ 错误
那是被借用的内存,不用就浪费
echo 3 > /proc/sys/vm/drop_caches
✅ 只用于调试
✅ 生产环境一般不要
✅ 写缓存未刷盘 + 断电 = 可能丢数据
Linux 缓存 = 用内存缓存文件、元数据和内核对象,通过 Page Cache + Writeback + LRU 自动管理,极大提升性能且不浪费内存。
如果你愿意,我也可以:
你想深入哪一块?