Go Wiki: PGO 工具
Profile-guided optimization (PGO) 在 Go 工具鏈中使用 CPU pprof profile 作為 PGO profile 格式。儘管 pprof 是一個在許多工具中廣泛使用的格式,但 Go 的 PGO 對 profile 的內容施加了 特定要求,而生態系統中的許多工具可能與之不相容。
此(非詳盡)頁面列出了已知與 PGO 相容的用於收集和處理 profile 的工具。
收集 profile
runtime/pprof
、net/http/pprof
:Go 標準庫的 profiling 功能始終提供 PGO 相容的 profile。- Parca Agent 與能夠生成包含函式起始行的元資料的符號化器(symbolizer)配對時,可以生成 PGO 相容的 profile,例如 Polar Signals Cloud 或 Parca(從
v0.19.0
版本開始)。
處理 profile
go tool pprof
/ 獨立pprof
CLI、github.com/google/pprof/profile
:官方pprof
CLI 和 Go 包可以對 profile 執行各種操作(過濾、合併多個 profile 等)。這些工具/包通常會在操作過程中保留元資料(例如,符號化、函式起始行)。因此,給定一個 PGO 相容的輸入,它們應該會產生一個 PGO 相容的輸出。- Parca 和 Polar Signals Cloud 提供了各種機制來查詢和過濾 profiling 資料,並將任何查詢下載為包含函式起始行元資料的 pprof 檔案,以便與 PGO 相容。
此內容是 Go Wiki 的一部分。