vmstat -m 可查看内核 slab 缓存详细信息,输出包含 name、objects、objsize、pagesperslab、pages 和 totpages 等列,slab 总内存 ≈ pages × 4KB,并可通过 /proc/slabinfo 验证及 slabtop 等工具交叉分析。

直接用 vmstat -m 就能查看内核 slab 缓存的详细使用情况。
执行命令并理解输出
在终端中运行:
vmstat -m
该命令会列出所有 slab 缓存池(如 dentry、inode_cache、ext4_inode_cache 等)的统计信息,关键列包括:
- name:缓存名称,反映内核对象类型
- objects:当前活跃对象数量
- objsize:每个对象占用字节数
- pagesperslab:每个 slab 页块包含的页面数
- pages:该缓存总共占用的物理内存页数
- totpages:已分配的所有 slab 页面总数(含空闲)
快速估算 slab 占用内存
slab 总内存 ≈ pages × 4KB(默认页大小)。也可结合 /proc/slabinfo 验证:
awk '{sum += $3 * $4} END {print sum " bytes"}' /proc/slabinfo或更直观地换算为 MB:
awk '{sum += $3 * $4} END {printf "%.1f MB\n", sum/1024/1024}' /proc/slabinfo关注异常增长的缓存项
以下缓存项容易随负载膨胀,需重点观察:
- dentry:目录项缓存,文件操作频繁时易增长
- inode_cache:inode 缓存,大量小文件场景下可能占用显著内存
- ext4_* 类缓存:对应 ext4 文件系统相关结构
若某项 objects 持续上升且 pages 显著增加,可能提示缓存未及时回收,或存在内核模块泄漏。
配合其他工具交叉验证
slab 内存不计入常规 RSS,仅靠 top/htop 看不到。建议组合使用:
-
cat /proc/meminfo | grep -i "slab\|sreclaimable"查看整体 slab 使用(SReclaimable 是可回收部分) -
slabtop实时动态排序,支持按 objects 或 size 排序,交互性强 -
grep -A 10 "slab" /proc/meminfo获取当前 slab 相关总量指标


















