Linux缓存监控工具有哪些
小樊
46
2026-01-11 11:48:35
Linux缓存监控工具全景
一 系统级内存与缓存概览
- free:查看整体内存与缓存概览,关注 buff/cache 与 available。示例:
free -h。
- /proc/meminfo:内核内存细节,关注 Cached、Buffers、SReclaimable(可回收 Slab)。示例:
cat /proc/meminfo | egrep 'Cached|Buffers|SReclaimable'。
- vmstat:整体资源与换页,关注 si/so(换入/换出)判断是否存在内存压力。示例:
vmstat 1。
- top/htop:进程级内存占用,配合 M 按内存排序,快速定位大内存进程。
- sar(来自 sysstat):历史与实时内存统计。示例:
sar -r 1 3(需先安装并启用 sysstat)。
- iostat:块设备 I/O 与内存页统计,辅助判断 I/O 对缓存的影响。示例:
iostat -m 1。
- lsof:定位被进程占用(含已删除但仍打开)的文件,常用于排查“已删文件仍占空间/缓存”的场景。示例:
lsof | grep deleted。
二 缓存命中与文件级缓存分析
- cachestat(BCC/eBPF):系统级缓存命中与 I/O 概览,输出包含 TOTAL、HITS、MISSES、DIRTIES、BUFFERS_MB、CACHED_MB。示例:
cachestat 1 3。
- cachetop(BCC/eBPF):按进程展示缓存命中,含 READ_HIT%、WRITE_HIT%。示例:
cachetop。
- pcstat:查看指定文件在内存中的缓存大小与比例。示例:
pcstat /bin/ls。
- 提示:BCC 工具依赖 Linux 内核 ≥ 4.1,安装后工具通常位于 /usr/share/bcc/tools,必要时将其加入 PATH。
三 内核对象缓存监控
- slabtop:实时查看内核 slab 缓存(对象缓存),支持按不同维度排序与刷新间隔设置。示例:
slabtop -d 5 -s n(每 5 秒刷新、按名称排序)。常用于识别 dentry、inode_cache 等内核对象的内存占用异常。
四 进程内存占用与共享内存分析
- smem:基于 PSS/USS 的进程内存统计,更准确反映实际内存占用与共享内存分摊。示例:
smem -t -k。
- ps:快速查看进程 RSS/VSZ/%MEM。示例:
ps aux --sort=-%mem | head。
- glances:一体化监控(内存、CPU、磁盘、网络),适合终端快速巡检。
五 长期监控与可视化
- Prometheus + Grafana + Node Exporter:采集并可视化包括内存与缓存在内的系统指标,适合 7×24 长期观测与告警。部署 Node Exporter 采集节点指标,Prometheus 存储查询,Grafana 配置内存/缓存仪表盘。
六 快速排查与注意事项
- 判断健康度的关键信号:
- available 充足而 free 很小属正常(缓存可回收);
- si/so 持续不为 0 表示发生换页,需结合 I/O 与应用延迟进一步排查;
- 关注 SReclaimable(可回收 Slab)以识别内核对象缓存压力。
- 必要时清理缓存(仅用于诊断,生产慎用):先
sync,再 echo 3 > /proc/sys/vm/drop_caches(需要 root)。
- 评估缓存效果时,优先使用 cachestat/cachetop 观察 HITS/MISSES 与读写命中率,配合 pcstat 验证热点文件是否已充分缓存。