sudo apt install linux-tools-common linux-tools-$(uname -r)
sudo yum install perf
sudo 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 report
Overhead
(占用CPU比例)高的函數,結合調用棧分析瓶頸。分析緩存性能
perf stat -e cache-misses,cache-references ./my_program
缺失率=cache-misses/cache-references
,若過高需優化內存訪問模式。跟蹤系統調用開銷
perf trace -e 'syscalls:sys_enter_read' ls
read
系統調用的耗時及調用頻率,定位I/O瓶頸。生成火焰圖可視化
perf record -F 99 -g ./my_program
perf script > out.perf
stackcollapse-perf.pl out.perf > out.folded
flamegraph.pl out.folded > flamegraph.svg
perf probe
):perf probe --add tcp_sendmsg
(需內核支持)。root
權限或CAP_PERFMON
能力。--no-inherit
選項。man perf
FlameGraph
(火焰圖生成)、bcc
(eBPF擴展)提升分析效率。通過以上命令組合,可快速定位進程級性能瓶頸,從CPU、內存、I/O等多維度優化程序。