perf火炬圖【轉】

轉自:https://www.cnblogs.com/linhaostudy/p/16098864.html

正文

1、perf命令簡要介紹

1.1 perf採集數據

讓我們從 perf 命令(performance 的縮寫)講起, 它是 Linux 系統原生提供的性能分析工具, 會返回 CPU 正在執行的函數名以及調用棧(stack)

perf record -F 99 -p 3887 -g -- sleep 30

-F 指定採樣頻率爲 99Hz(每秒99次), 如果 99次 都返回同一個函數名, 那就說明 CPU 這一秒鐘都在執行同一個函數, 可能存在性能問題.

perf record 表示採集系統事件, 沒有使用 -e 指定採集事件, 則默認採集 cycles(即 CPU clock 週期), -F 99 表示每秒 99 次, -p 13204 是進程號, 即對哪個進程進行分析, -g 表示記錄調用棧, sleep 30 則是持續 30 秒.

1.2 perf report

perf report -n --stdio

2、 生成火焰圖

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

# 生成摺疊後的調用棧
perf script -i perf.data &> perf.unfold

將解析出來的信息存下來, 供生成火焰圖

首先用 stackcollapse-perf.pl 將 perf 解析出的內容 perf.unfold 中的符號進行摺疊 :

Brendan D. Gregg 的 Flame Graph 工程實現了一套生成火焰圖的腳本.

Flame Graph 項目位於 GitHub上

https://github.com/brendangregg/FlameGraph

# 生成火焰圖
./stackcollapse-perf.pl perf.unfold &> perf.folded

最後生成 svg 圖

./flamegraph.pl perf.folded > perf.svg

我們可以使用管道將上面的流程簡化爲一條命令

perf script | FlameGraph/stackcollapse-perf.pl | FlameGraph/flamegraph.pl > process.svg

image



如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章