slabtop是Linux系统中需root权限运行的实时内核slab缓存监控工具,默认按活跃对象数排序,关键字段包括OBJS、ACTIVE、USE%、OBJ SIZE、SLABS、SSIZE和CACHE SIZE,常用于排查内存泄漏与缓存效率问题。

直接运行 slabtop 就能实时查看内核 slab 缓存的内存占用情况,但必须用 root 权限,否则看不到完整数据。
基础使用与权限要求
普通用户执行会失败或显示空/零值。正确方式是:
- sudo slabtop —— 启动交互式界面,默认按活跃对象数(ACTIVE)降序排列
- 按 q 退出,和 top 命令一致
- 若提示“command not found”,说明系统未安装 procps-ng 包(Ubuntu/Debian 运行 sudo apt install procps;RHEL/CentOS 运行 sudo yum install procps-ng)
关键字段怎么看
界面主体表格中,重点关注以下列:
- OBJS:该缓存当前已分配的对象总数
- ACTIVE:正在被使用的活跃对象数
- USE%:活跃率 = ACTIVE / OBJS × 100%,持续低于 20% 可能暗示缓存泄漏或回收滞后
- OBJ SIZE:每个对象实际占用字节数(含对齐和元数据)
- CACHE SIZE:该缓存总内存占用,≈ SLABS × SSIZE,是判断“谁吃内存最多”的核心指标
- NAME:缓存名称,如 dentry、ext4_inode_cache、buffer_head、kmalloc-192,名字本身已反映用途或大小特征
常用排序与刷新控制
启动后可按快捷键切换排序,也可在命令行指定:
- slabtop -s c —— 按 CACHE SIZE 降序,快速定位内存大户
- slabtop -s a —— 按 ACTIVE 降序,看哪些缓存最“忙”
- slabtop -s u —— 按 USE% 排序,排查低效缓存
- slabtop -d 5 —— 每 5 秒刷新一次(默认 1 秒,高负载时可调大避免干扰)
- slabtop -o —— 只输出一次快照,适合脚本采集或截图存档
配合 /proc/slabinfo 补充细节
slabtop 不显示每 slab 的页数、对象对齐细节等,这些需查原始数据源:
- cat /proc/slabinfo | head -5 查看字段含义和格式
- awk '{if($3>0) print $1, $3, $4, $5}' /proc/slabinfo | sort -k2nr | head -10 找 objsize 最大的前 10 个缓存
- grep -E 'dentry|inode|buffer_head' /proc/slabinfo 快速过滤常见高风险缓存项


















