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 生成火焰圖
- JAVA效能分析之使用火焰圖Java
- perf 的資料用火焰圖顯示
- linux 效能調優工具perf + 火焰圖 常用命令Linux
- perf效能分析工具使用分享
- Linux火焰圖效能分析文章及視訊演示Linux
- Linux下用perf生成火焰圖方法Linux
- Flame Graph 火焰圖分析 Java 效能Java
- 使用火焰圖進行Java應用效能分析Java
- Linux程式效能分析和火焰圖Linux
- linux效能分析工具之火焰圖Linux
- 利用perf進行效能分析
- Rust效能分析之測試及火焰圖,附(lru,lfu,arc)測試Rust
- 系統級效能分析工具perf的介紹與使用
- openresty使用火焰圖排查效能問題REST
- go效能調優之火焰圖Go
- In和exists使用及效能分析(三):in和exists的效能分析
- In和exists使用及效能分析(一):in的使用
- 網路效能測試-perf
- perf 安裝到分析
- Golang火焰圖Golang
- Chrome 火焰圖Chrome
- In和exists使用及效能分析(二):exists的使用
- 在OR專案中使用火焰圖
- MySQL下Limit使用及效能分析MySqlMIT
- 宋寶華:火焰圖 全域性視野的 Linux 效能剖析Linux
- .netcore利用perf分析高cpu使用率NetCore
- Golang FlameGraph(火焰圖)Golang
- 程式設計師精進之路:效能調優利器--火焰圖程式設計師
- 如何讀懂火焰圖?+ 例項講解程式效能優化優化
- 容器化 RDS:藉助火焰圖定位Kubernetes效能問題
- 使用Android Profile做效能分析及優化Android優化
- 使用xhprof進行線上PHP效能追蹤及分析PHP
- [轉帖]使用perf解決JDK8U小版本升級後效能下降的問題JDK
- 如何利用工具提高React頁面渲染效能之PerfReact
- systemtap和火焰圖學習筆記筆記
- Linux效能分析流程圖Linux流程圖