性能·内存 / 命令文档

Linux 页缓存与缓冲区

$ cache 9 个章节 Linux 命令详解

概述

深入理解内存管理的核心机制

页缓存 (Page Cache)

缓存文件系统数据以页为单位(4KB)提升文件读写性能

缓冲区 (Buffer Cache)

缓存块设备元数据以块为单位优化磁盘块访问

应用程序

页缓存

缓冲区

磁盘

核心价值

性能提升:将频繁访问的数据保存在内存中,避免昂贵的磁盘I/O操作,读取速度提升数百倍。

写入优化:通过延迟写入(delayed write)机制,将多个小写操作合并为大块写入,减少磁盘寻道时间。

系统稳定:平滑I/O负载波动,防止磁盘瓶颈影响系统整体性能。

资源利用:充分利用系统空闲内存,实现内存资源的最大化价值。

关联关系

统一管理:现代Linux中,页缓存和缓冲区已统一为页缓存层,但概念上仍有区分。

数据流向:文件数据 → 页缓存 → 缓冲区 → 磁盘块设备

内存分配:两者共享系统可用内存,由内核动态调节比例。

回写机制:脏页会定期或在内存不足时写回磁盘,保证数据一致性。

关键理解:页缓存关注文件内容,缓冲区关注磁盘元数据(如inode、目录结构)。

监控命令

free -h

查看缓存使用情况,关注 buff/cache 列

cat /proc/meminfo | grep -E "(Cached|Buffers)"

详细查看缓存内存分布

vmstat 1

实时监控I/O活动和缓存变化

iotop -o

查看进程I/O使用情况,判断缓存效果

清理操作

echo 1 > /proc/sys/vm/drop_caches  # 清理页缓存
echo 2 > /proc/sys/vm/drop_caches  # 清理目录项和inode缓存
echo 3 > /proc/sys/vm/drop_caches  # 清理所有缓存

性能调优

echo 10 > /proc/sys/vm/dirty_ratio

设置脏页占总内存的最大比例

echo 5 > /proc/sys/vm/dirty_background_ratio

设置后台回写进程启动的脏页比例

运维要点

清理缓存风险:不要随意清理缓存!这会导致性能急剧下降,系统需要重新从磁盘加载数据。只在内存泄漏诊断时使用。
内存不足误判:free命令显示的buff/cache是可回收内存,不是内存不足的标志。关注available列。
最佳实践: • 监控 dirty_ratio 避免写入阻塞 • 关注磁盘I/O等待时间(wa%) • 使用SSD时可适当调高 dirty_ratio • 定期检查大文件是否占用过多缓存
性能指标: • 缓存命中率 > 90% 为良好 • I/O等待时间 < 10% 为正常 • 脏页回写频率稳定无阻塞

同分类 · 其他命令文档