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 的一部分。