Go Wiki: PGO 工具

Profile-guided optimization (PGO) 在 Go 工具鏈中使用 CPU pprof profile 作為 PGO profile 格式。儘管 pprof 是一個在許多工具中廣泛使用的格式,但 Go 的 PGO 對 profile 的內容施加了 特定要求,而生態系統中的許多工具可能與之不相容。

此(非詳盡)頁面列出了已知與 PGO 相容的用於收集和處理 profile 的工具。

收集 profile

  • runtime/pprofnet/http/pprof:Go 標準庫的 profiling 功能始終提供 PGO 相容的 profile。
  • Parca Agent 與能夠生成包含函式起始行的元資料的符號化器(symbolizer)配對時,可以生成 PGO 相容的 profile,例如 Polar Signals CloudParca(從 v0.19.0 版本開始)。

處理 profile

  • go tool pprof / 獨立 pprof CLIgithub.com/google/pprof/profile:官方 pprof CLI 和 Go 包可以對 profile 執行各種操作(過濾、合併多個 profile 等)。這些工具/包通常會在操作過程中保留元資料(例如,符號化、函式起始行)。因此,給定一個 PGO 相容的輸入,它們應該會產生一個 PGO 相容的輸出。
  • ParcaPolar Signals Cloud 提供了各種機制來查詢和過濾 profiling 資料,並將任何查詢下載為包含函式起始行元資料的 pprof 檔案,以便與 PGO 相容。

此內容是 Go Wiki 的一部分。