sudo apt install linux-tools-common linux-tools-$(uname -r)sudo yum install perfsudo sysctl kernel.perf_event_paranoid=-1(允许非特权用户使用)| 子命令 | 功能 | 示例 |
|---|---|---|
perf stat |
统计硬件事件(如CPU周期、缓存命中率) | perf stat -e cycles,cache-misses ./my_program |
perf record |
记录性能数据(支持采样与调用栈跟踪) | perf record -F 99 -g -- ./my_program(-F 99Hz采样,-g记录调用栈) |
perf report |
分析记录数据,生成热点函数报告 | perf report(交互式界面查看函数耗时占比) |
perf top |
实时监控系统/进程性能热点 | perf top -p <PID>(监控指定进程) |
perf trace |
跟踪系统调用(类似strace,但性能更高) |
perf trace -e 'syscalls:sys_enter_open' ./my_program |
定位CPU热点函数
perf record -g ./my_program → perf reportOverhead(占用CPU比例)高的函数,结合调用栈分析瓶颈。分析缓存性能
perf stat -e cache-misses,cache-references ./my_program缺失率=cache-misses/cache-references,若过高需优化内存访问模式。跟踪系统调用开销
perf trace -e 'syscalls:sys_enter_read' lsread系统调用的耗时及调用频率,定位I/O瓶颈。生成火焰图可视化
perf record -F 99 -g ./my_programperf script > out.perfstackcollapse-perf.pl out.perf > out.foldedflamegraph.pl out.folded > flamegraph.svgperf probe):perf probe --add tcp_sendmsg(需内核支持)。root权限或CAP_PERFMON能力。--no-inherit选项。man perfFlameGraph(火焰图生成)、bcc(eBPF扩展)提升分析效率。通过以上命令组合,可快速定位进程级性能瓶颈,从CPU、内存、I/O等多维度优化程序。