Appearance
perf 工具完全指南
更新时间:2026-08-06
perf 是 Linux 内核自带的性能分析工具集,提供 14+ 个子命令覆盖从硬件计数器到内核追踪的全维度观测能力。本目录是 perf 工具的系统性指南,每个子命令独立成篇,配合交叉引用构建完整的知识网络。
一、perf 子命令全景图

子命令速查
| 子命令 | 一句话 | 核心用途 | 文档 |
|---|---|---|---|
| perf stat | 一句话告诉你程序慢不慢 | 整体性能统计:IPC、缓存命中率、分支预测 | perf-stat.md |
| perf top | 实时看"CPU 在忙什么函数" | 类似 top 的函数级热点实时监控 | perf-top.md |
| perf record | 采集性能样本数据 | 采样调用栈,生成 perf.data | perf-record.md |
| perf report | 分析采样数据 | 查看热点函数、调用链、占比 | perf-report.md |
| perf annotate | 看到"哪条指令最慢" | 汇编级性能热点分析 | perf-annotate.md |
| perf trace | 追踪系统调用 | 应用与内核交互的可视化 | perf-trace.md |
| perf probe | 动态插入探针 | 内核/用户态动态追踪点 | perf-probe.md |
| perf sched | 分析调度行为 | 谁等了多久 CPU,谁抢了 CPU | perf-sched.md |
| perf lock | 分析锁竞争 | 哪个锁争用最严重 | perf-lock.md |
| perf c2c | 检测缓存伪共享 | CPU 缓存行级别的共享/争用分析 | perf-c2c.md |
| perf list | 列出可用事件 | 硬件事件、软件事件、tracepoint | perf-events.md |
| 火焰图 | 可视化热点调用栈 | 一眼看出程序瓶颈 | perf-flamegraph.md |
| perf script | 原始数据导出 | 为脚本/管道处理提供原始事件 | 见各子命令文档 |
| perf diff | 两个采样文件对比 | 优化前后效果可视化 | 见 perf-bench-diff |
| perf bench | 微基准测试 | 评估系统子系统的基准性能 | 见 perf-bench-diff |
二、学习路径
入门(30 分钟)
bash
perf stat → perf top → perf record + report- 先读 perf-stat.md,学会用
perf stat快速诊断程序的基本面(IPC、缓存) - 再看 perf-top.md,理解如何实时看热点函数
- 最后读 perf-record.md + perf-report.md,掌握采样分析流程
进阶(2 小时)
bash
perf flamegraph → perf annotate → perf trace → perf events- perf-flamegraph.md — 读懂火焰图
- perf-annotate.md — 汇编级热点定位
- perf-trace.md — syscall 层面追踪
- perf-events.md — 掌握事件体系
专家(1 天)
bash
perf sched → perf lock → perf c2c → perf probe- perf-sched.md — 调度延迟诊断
- perf-lock.md — 锁竞争分析
- perf-c2c.md — 伪共享检测
- perf-probe.md — 动态插桩
三、经典排查路径
"程序很慢,不知道原因"

四、相关资源
| 资源 | 说明 | 链接 |
|---|---|---|
| perf 场景化学习架构 | 12 个 demo 覆盖全部子命令 | perf-demos-architecture.md |
| perf 实战案例集 | 6 个案例:O0/O2、user/kernel 视角 | perf-case-studies/ |
| 多线程+IO 三步分析法 | 15 分钟诊断混合程序 | perf-multithread-io-analysis.md |
| 工具定位深度对比 | perf vs vmstat/top/mpstat/... | tool-perf-comprehensive-guide.md |
| PMU 性能监控单元 | 硬件计数器原理 | pmu.md |
| 缓存子系统 | 缓存组织、一致性协议 | cache/README.md |
| 代码级定位工具 | perf 基础使用 | perf.md |
| perf 原理 | PMU 采样 → mmap 环形缓冲区 | perf-internals.md |
五、一句话总结
perf 是 Linux 性能分析的"瑞士军刀"——
perf stat快速判断方向,perf record+report精确定位热点,perf annotate/trace/sched/lock/c2c/probe逐个击破特定维度,本目录为每一把"刀"提供了独立、深入的用法指南。