火焰圖生成和解析


火焰圖(flame graph)是性能分析的利器。這里接單介紹一下在Linux環境生成火焰圖,至於如何讀懂火焰圖,可以參考大佬博客。
http://www.ruanyifeng.com/blog/2017/09/flame-graph.html

perf命令

Linux 系統原生提供的性能分析工具,會返回 CPU 正在執行的函數名以及調用棧(stack),如果使用的環境中沒有這個命令,首先要安裝。

yum -y install perf

數據采樣

perf record -F 99 -p <pid> -g -- sleep 30

pid表示需要采樣的進程id,如果是Java進程可以使用jps等命令獲取進程id,perf record表示記錄,-F 99表示每秒99次,-g表示記錄調用棧,sleep 30則是持續30秒

解析數據

使用perf script工具對perf.data進行解析

perf script -i perf.data &> perf.unfold

生成火焰圖

需要用到一個工具,項目地址:https://github.com/brendangregg/FlameGraph,如果下載過慢,點擊這里下載。

./stackcollapse-perf.pl perf.unfold > perf.folded //生成折疊后的調用棧
./flamegraph.pl perf.folded > out.svg //生成火焰圖

下載svg文件,然后通過火焰圖分析CPU,至於如何讀懂火焰圖,就要回到文章開始的鏈接了。😄
來一張效果圖:

注:如果提示沒有xxx.pl命令或者,perf命令不能執行,注意切換到管理員權限,授權可執行權限,再次嘗試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM