參考鏈接
perf性能分析工具使用分享
如何讀懂火焰圖?-阮一峰
perf基本用法-record,report-知乎
火焰圖抓取
準備:
- centos安裝perf工具
dnf install perf
- 下載火焰圖解析代碼
git clone https://github.com/brendangregg/FlameGraph.git
抓取指定進程的火焰圖
perf record -F 99 -p xxpid -g -- sleep 60
perf script -i perf.data > perf.unfold
./FlameGraph/stackcollapse-perf.pl perf.unfold > perf.folded
./FlameGraph/flamegraph.pl perf.folded > perf.svg
參數解析
-F 99 :1秒鐘進行采集99次
-p xxxid: 采集進程id信息
-a:采集所有cpus信息
-g:收集調用棧
– sleep 30:采集時間為30秒
火焰圖說明
y 軸表示調用棧,每一層都是一個函數。調用棧越深,火焰就越高,頂部就是正在執行的函數,下方都是它的父函數。
x 軸表示抽樣數,如果一個函數在 x 軸占據的寬度越寬,就表示它被抽到的次數多,即執行的時間長。注意,x 軸不代表時間,而是所有的調用棧合并后,按字母順序排列的。
火焰圖就是看頂層的哪個函數占據的寬度最大。只要有"平頂"(plateaus),就表示該函數可能存在性能問題。
注意:
./FlameGraph/stackcollapse-perf.pl
和./FlameGraph/flamegraph.pl
為FlameGraph.git
中的工具,負責火焰圖數據的解析,需要注意可執行權限。