Golang火焰圖
火焰圖
火焰圖(Flame Graph)是 Bredan Gregg 建立的一種效能分析圖表,因為它的樣子近似火而得名。上面的 profiling 結果也轉換成火焰圖。Uber開源工具 go-torch可以直接讀取 golang profiling 資料,並生成一個火焰圖的 svg 檔案。
使用火焰圖之前,需要安裝如下工具:
1 原生 PProf 工具
go get github.com/google/pprof
需要將產生的pprof可執行程式所在路徑新增到環境變數中。
用法
pprof -http=:8080 cpu.prof
2 安裝FlameGraph
git clone https://github.com/brendangregg/FlameGraph.git
將FlameGraph所在路徑新增到環境變數中。
export PATH=$PATH:$GOPATH/FlameGraph
3 安裝graphviz
graphviz 用於繪圖
CentOS:
yum install graphviz
Ubuntu
sudo apt-get install graphviz
4 安裝go-torch
安裝go-torch用於採集資料,生產火焰圖。
go get github.com/uber/go-torch
需要將產生的pprof可執行程式所在路徑新增到環境變數中。
go-torch 工具的使用非常簡單,沒有任何引數的話,它會嘗試從 http://localhost:8080/debug/pprof/profile 獲取 profiling 資料。它有三個常用的引數可以調整:
-u --url:要訪問的 URL,這裡只是主機和埠部分
-s --suffix:pprof profile 的路徑,預設為 /debug/pprof/profile
-t --seconds:要執行 profiling 的時間長度,預設為 30s
火焰圖 svg 檔案可以通過瀏覽器開啟,它對於呼叫圖的最優點是它是動態的:可以通過點選每個方塊來 zoom in 分析它上面的內容。
火焰圖的呼叫順序從下到上,每個方塊代表一個函式,它上面一層表示這個函式會呼叫哪些函式,方塊的大小代表了佔用 CPU 使用的長短,火焰圖的配色並沒有特殊的意義。
5 結果
執行程式(監聽於9090埠),輸入如下指令
go-torch -u http://localhost:9090 -t 30
隨後在執行go-torch的目錄下會生成torch.svg檔案,通過瀏覽器開啟,如下:
點選圖中的任意部分,可以看到更詳細資訊:
備註:
在Windows下安裝同樣方式操作時,會有如下錯誤:
could not generate flame graph: fork/exec F:\Pr
ogramTest\Golang\src\github.com\FlameGraph\flamegraph.pl: %1 is not a valid Win32 application.
問題原因是windows不能直接執行pl檔案。pl檔案是perl檔案,於是安裝perl,並且將路徑新增到環境變數中。依然報錯。因為windows直接可執行的是exe檔案。可能需要將下載的flamegraph進行編譯,然後進行安裝。或者直接下載flamegraph可執行程式,並進行安裝。這部分後面完善。
掃描二維碼,關注“清遠的夢囈”公眾號,手機端檢視文章
相關文章
- Golang FlameGraph(火焰圖)Golang
- Chrome 火焰圖Chrome
- perf/Simpleperf 生成火焰圖
- Flame Graph 火焰圖分析 Java 效能Java
- go效能調優之火焰圖Go
- Linux程式效能分析和火焰圖Linux
- perf及火焰圖的使用,效能分析
- systemtap和火焰圖學習筆記筆記
- 在OR專案中使用火焰圖
- JAVA效能分析之使用火焰圖Java
- linux效能分析工具之火焰圖Linux
- Linux下用perf生成火焰圖方法Linux
- openresty使用火焰圖排查效能問題REST
- perf 的資料用火焰圖顯示
- Linux火焰圖效能分析文章及視訊演示Linux
- 使用火焰圖進行Java應用效能分析Java
- 動態追蹤技術(中) - Dtrace、SystemTap、火焰圖
- 效能工具perf的用法以及如何繪製效能火焰圖
- 深度學習框架火焰圖pprof和CUDA Nsys配置指南深度學習框架
- golang 技術圖Golang
- 程式設計師精進之路:效能調優利器--火焰圖程式設計師
- 如何讀懂火焰圖?+ 例項講解程式效能優化優化
- linux 效能調優工具perf + 火焰圖 常用命令Linux
- golang 合成的圖片Golang
- 【遊戲設計圖形學】模擬自然界火焰的方法遊戲設計
- 容器化 RDS:藉助火焰圖定位Kubernetes效能問題
- 宋寶華:火焰圖 全域性視野的 Linux 效能剖析Linux
- webgl實現火焰效果Web
- CSS 火焰?不在話下CSS
- Rust效能分析之測試及火焰圖,附(lru,lfu,arc)測試Rust
- IntelliJ IDEA 新版釋出:支援CPU火焰圖,新增酷炫主題IntelliJIdea
- golang 生成圖片驗證碼Golang
- Golang 圖片處理 — image 庫Golang
- 圖解Golang垃圾回收機制!圖解Golang
- 跨越可觀測性鴻溝|高手們都在用的“火焰圖”是什麼
- canvas火焰效果程式碼例項Canvas
- [圖書] Golang 優質開源圖書推薦Golang
- 圖解Golang的GC演算法圖解GolangGC演算法