2026-10-23 06:56:58
perf 是 Linux 系统中一款功能强大的性能分析工具,通过收集硬件性能计数器数据、跟踪系统事件和采样程序调用栈,提供详细的性能统计信息,帮助开发者定位性能瓶颈并优化系统性能。
安装方法不同 Linux 发行版的安装命令如下:
perf stat
功能:收集并显示性能计数器统计信息(如指令数、缓存命中率、分支预测错误率),评估整体性能。
示例:perf stat ./your_program
perf record
功能:采集程序运行期间的硬件性能数据、事件和调用栈信息,保存到文件供后续分析。
关键选项:
-g:记录调用栈信息。
示例:perf record -g ./your_program
perf report
功能:分析 perf record 收集的数据,生成包含调用栈、函数耗时和性能热点的报告。
示例:perf report
perf top
功能:实时监控进程性能指标(如 CPU 占用率、函数执行次数),动态显示性能热点。
示例:perf top
perf annotate
功能:以源代码形式显示采样数据和调用栈,标注每行代码的性能指标(如指令周期数)。
示例:perf annotate function_name
perf diff
功能:比较两个 perf.data 文件的性能差异,分析优化效果。
示例:perf diff ./perf.data1 ./perf.data2
perf probe
功能:动态添加/移除性能探针,收集特定代码路径的性能数据。
示例:perf probe function_name
检测缓存命中率、分支预测错误率、指令周期等。
示例:通过 perf stat 分析循环展开的优化效果。
跟踪内存分配(如 malloc/free)和缓存未命中(Cache Miss)。
示例:结合 perf record -e cache-misses 定位内存瓶颈。
监控磁盘读写延迟、块设备操作次数。
示例:使用 perf stat -e block:* 分析数据库 I/O 性能。
实时监控资源占用最高的进程或函数。
示例:通过 perf top 发现异常 CPU 占用。
确保内核启用 CONFIG_PERF_EVENTS 选项(编译时配置)。
检查支持:grep PERF_EVENTS /boot/config-$(uname -r)。
部分功能需 root 权限,建议使用 sudo 运行命令。
CPU 频率调整(如 Turbo Boost)、超线程(SMT)可能影响结果准确性。
建议在稳定环境下测试(如禁用动态频率调整)。
采样频率过高可能导致开销,过低可能遗漏关键事件。
默认采样周期通常为毫秒级,可通过 -F 选项调整(如 -F 997)。
《深入理解 Linux 性能分析工具:perf》
《Linux 性能剖析工具—perf》
《Linux 性能可观察性工具》
通过合理使用 perf 的子命令和选项,开发者可以全面分析系统、应用和内核的性能问题,实现精准优化。