☰
perf kmem 所有用法
2026/10/15 4:00:06 网站建设 项目流程

perf kmem的完整用法围绕两个子命令展开:record(采集数据)和stat(分析数据)。所有选项都需要根据你分析的对象(Slab 或 Page)来配合使用。

基本语法

perf kmem [<options>] {record|stat}

核心子命令

1.perf kmem record:采集内存分配事件
用于录制内核内存分配/释放的事件流,生成perf.data文件供后续分析。

# 基本用法:记录命令执行期间的内存事件 sudo perf kmem record -- <command> # 指定输出文件(注意:-o 必须放在 record 之后)[citation:11] sudo perf kmem record -o /tmp/kmem.data sleep 30

注意:record支持传递额外的perf record选项(如-o、-a等),但这些选项必须紧跟在record之后。

2.perf kmem stat:分析统计结果
读取perf.data,输出内存分配统计报告。

# 基本用法:读取默认的 perf.data sudo perf kmem stat # 指定输入文件 sudo perf kmem stat -i /tmp/kmem.data

统计模式与排序选项

分析对象(二选一)

选项说明默认
--slab分析 Slab 分配器(小对象)✅(无指定时)
--page分析 Page 分配器(大块内存)

统计维度

选项说明
--caller按调用点(Callsite)聚合统计,定位泄漏源头的关键
--alloc按单次分配(Per-allocation)展示详情
-v, --verbose显示更多信息(如符号地址)

排序选项-s, --sort

必须配合--slab/--page/--alloc/--caller使用。

适用模式可用排序键
Slabptr、callsite、bytes、hit、pingpong、frag
Pagepage、callsite、bytes、hit、order、migtype、gfp
# 示例:按碎片率降序排列 Slab 调用点 sudo perf kmem stat --slab --caller --sort=frag,hit

其他实用选项

选项说明
-l <num>, --line=<num>仅显示前 N 行结果
--raw-ip显示原始 IP 地址,而非解析后的符号
--time=<start>,<stop>仅分析指定时间窗口内的样本(格式:秒.微秒)
--live(仅--page)仅显示当前存活的页分配统计,而非累计总量,对排查持续泄漏更直观
-f, --force强制读取perf.data,忽略文件所有权校验
-i <file>, --input=<file>指定stat要读取的输入文件

典型用法示例

# 排查 Slab 泄漏:采集 30 秒系统内存事件,按调用点查看碎片率 sudo perf kmem record -a sleep 30 sudo perf kmem stat --slab --caller --sort=frag,hit # 排查 Page 外部碎片:采集后查看 Page 分配统计 sudo perf kmem record --page sleep 30 sudo perf kmem stat --page --caller # 查看当前存活的页分配(排查持续泄漏) sudo perf kmem stat --page --live

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询