我們需要理解軟件對系統資源的使用情況。比如對於cpu,我們想知道當前軟件究竟使用了多少cpu?軟件更新以后又變化了多少?剖析器(profilers)可以用來分析這樣的問題,幫助軟件開發者優化代碼,指導軟件使用者調優運行環境。但是profile通常都很長,太長的輸出分析和理解起來都很不方便。火焰圖作為一種新的profile可視化方式,可以讓我們更直觀,更方便的理解、分析問題。
perf stat對全局性能進行統計;
perf top可以實時查看當前系統進程函數占用率情況;
pref record記錄信息到perf.data;
perf report生成報告;
1,首先使用 perf record 命令記錄進程的 CPU 使用情況
命令:sudo perf record -e cpu-clock -g -p 20000 或者./t1
2. 使用 perf script 工具對 perf.data 進行解析
命令:sudo perf script -i perf.data &> perf.unfold
3. 使用 Flame Graph 工具將 perf.unfold 中的符號折疊 //生成腳本文件
命令:sudo FlameGraph/stackcollapse-perf.pl perf.unfold &> perf.folded
4. 使用 Flame Graph 工具將 perf.folded 生成 svg 火焰圖
命令:sudo FlameGraph/flamegraph.pl perf.folded > perf.svg //執行完成后生成perf.svg圖片,可以下載到本地,用瀏覽器打開 perf.svg
命令:perf script | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl > out.svg
火焰圖插件下載地址:
https://github.com/brendangregg/FlameGraph
快捷命令:
git clone https://github.com/brendangregg/FlameGraph.git
火焰圖原文翻譯:
https://zhuanlan.zhihu.com/p/73385693
軟件的性能分析,往往需要查看 CPU 耗時,了解瓶頸在哪里
http://www.ruanyifeng.com/blog/2017/09/flame-graph.html
致命報錯:想生成火焰圖,但是老是拋出錯誤:ERROR: No stack counts found,could not generate flame graph: exit status 2。
弄了很久,以為是 perf 沒裝,但是裝了也不行,然后發現必須在訪問程序時,火焰圖才能生成。