perf 是用來進行軟件性能分析的工具。通過它,應用程序可以利用 PMU,tracepoint 和內核中的特殊計數器來進行性能統計。
它不但可以分析指定應用程序的性能問題,也可以用來分析內核的性能問題,當然也可以同時分析應用代碼和內核,從而全面理解應用程序中的性能瓶頸。
perf list
使用 perf list 命令可以列出所有能夠觸發 perf 采樣點的事件。
perf stat <program>
總體分析
perf top
用於實時顯示當前系統的性能統計信息。該命令主要用來觀察整個系統當前的狀態,比如可以通過查看該命令的輸出來查看當前系統最耗時的內核函數或某個用戶進程。
perf record
perf record -a -e cycles -o cycle.perf -g sleep 10
-a 對所有 CPU 采樣
-o 輸出文件名,如果不指定,默認生成 perf.data
-g 額外記錄函數調用關系
sleep 10 采樣 10s
perf report
perf report -i <file>
-i 指定 perf record 生成的 perf data 文件,如果不指定 -i 則默認分析 perf.data 文件。
--max-stack=0 只輸出第一層函數調用
--stdio 輸出到標准輸出