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