perf及火焰圖的使用,效能分析
1:perf
perf是一個效能分析工具,
systemtap是一個執行時程式或系統資訊採集工具,使用前需要了解其動態追蹤語言,(瞭解動態追蹤:https://blog.csdn.net/wm_1991/article/details/51982617), systemtap功能強大,但是學習成本也高,用於分析複雜問題。
2:perf下載
下載系統對應版本rpm的二進位制檔案包,很方便安裝。
3:perf使用
A:資訊採集
sudo perf record -e cpu-clock -g -p PID
-g 選項是告訴perf record額外記錄函式的呼叫關係
-e cpu-clock 指perf record監控的指標為cpu週期
-p 指定需要record的程式pid
B:資訊解析
sudo perf script -i perf.data > perf.unfold
4:解析出來的檔案其實也不夠直觀,這是可以使用火焰圖生成工具,這裡做出來的是on-cpu火焰圖
火焰圖git: https://github.com/brendangregg/FlameGraph
C:資訊摺疊
sudo ./FlameGraph/stackcollapse-perf.pl perf.unfold > perf.folded
D:生成火焰圖
sudo ./FlameGraph/flamegraph.pl perf.folded > perf.svg
5:火焰圖的含義
火焰圖是基於 stack 資訊生成的 SVG 圖片, 用來展示 CPU 的呼叫棧。
y 軸表示呼叫棧, 每一層都是一個函式. 呼叫棧越深, 火焰就越高, 頂部就是正在執行的函式, 下方都是它的父函式.
x 軸表示抽樣數, 如果一個函式在 x 軸佔據的寬度越寬, 就表示它被抽到的次數多, 即執行的時間長. 注意, x 軸不代表時間, 而是所有的呼叫棧合併後, 按字母順序排列的.
火焰圖就是看頂層的哪個函式佔據的寬度最大. 只要有 “平頂”(plateaus), 就表示該函式可能存在效能問題。
顏色沒有特殊含義, 因為火焰圖表示的是 CPU 的繁忙程度, 所以一般選擇暖色調.
6:火焰圖使用
火焰圖是 SVG 圖片, 可以與使用者互動.
滑鼠懸浮
火焰的每一層都會標註函式名, 滑鼠懸浮時會顯示完整的函式名、抽樣抽中的次數、佔據總抽樣次數的百分比
點選放大
在某一層點選,火焰圖會水平放大,該層會佔據所有寬度,顯示詳細資訊。
左上角會同時顯示 “Reset Zoom”, 點選該連結, 圖片就會恢復原樣.
搜尋
按下 Ctrl + F 會顯示一個搜尋框,使用者可以輸入關鍵詞或正規表示式,所有符合條件的函式名會高亮顯示.
參考:
https://blog.csdn.net/gatieme/article/details/78885908
http://www.ruanyifeng.com/blog/2017/09/flame-graph.html
https://github.com/brendangregg/FlameGraph
擴充套件,高效能除錯經驗分享—來源:知乎
相關文章
- 效能工具perf的用法以及如何繪製效能火焰圖
- perf/Simpleperf 生成火焰圖
- 火焰圖(perf+ FlameGraph)
- linux 效能調優工具perf + 火焰圖 常用命令Linux
- perf效能分析工具使用分享
- Linux火焰圖效能分析文章及視訊演示Linux
- Linux下用perf生成火焰圖方法Linux
- Linux程式效能分析和火焰圖Linux
- Flame Graph 火焰圖分析 Java 效能Java
- 使用火焰圖進行Java應用效能分析Java
- 利用perf進行效能分析
- 系統級效能分析工具perf的介紹與使用
- Rust效能分析之測試及火焰圖,附(lru,lfu,arc)測試Rust
- go效能調優之火焰圖Go
- In和exists使用及效能分析(三):in和exists的效能分析
- In和exists使用及效能分析(一):in的使用
- .netcore利用perf分析高cpu使用率NetCore
- In和exists使用及效能分析(二):exists的使用
- 又一款效能監控利器——火焰圖
- Chrome 火焰圖Chrome
- Golang火焰圖Golang
- 容器化 RDS:藉助火焰圖定位Kubernetes效能問題
- Golang FlameGraph(火焰圖)Golang
- 使用Android Profile做效能分析及優化Android優化
- 程式設計師精進之路:效能調優利器--火焰圖程式設計師
- 如何讀懂火焰圖?+ 例項講解程式效能優化優化
- 大話火焰圖(flame graph)
- Linux效能分析流程圖Linux流程圖
- [轉帖]使用perf解決JDK8U小版本升級後效能下降的問題JDK
- VUE 9個效能優化祕密?(vue-9-perf-secrets)Vue優化
- systemtap和火焰圖學習筆記筆記
- MySQL-09.效能分析工具的使用MySql
- 現代圖片效能最佳化及體驗最佳化指南 - 圖片型別及 Picture 標籤的使用型別
- PHP 效能追蹤及分析工具(XHPROF)PHP
- 常見效能計數器及分析
- ThreadPoolExecutor的使用及原始碼分析thread原始碼
- 使用pprof進行效能分析
- Unity效能分析(一)流程與工具的使用Unity