Google pprof新版火焰图在Mac上全呈粉色,是否属正常现象?
问题
在Mac OS 10设备上,Google pprof中的「新版」火焰图呈现统一的粉色。这是预期现象吗?它不如旧版火焰图美观,怀疑是本地配置存在问题。
示例代码
package main import ( "os" "runtime/pprof" "time" ) func main() { // 创建CPU性能分析文件 f, err := os.Create("cpu.pprof") if err != nil { panic(err) } defer f.Close() // 启动CPU性能分析 pprof.StartCPUProfile(f) defer pprof.StopCPUProfile() // 模拟工作负载 for i := 0; i < 100; i++ { Foo() Bar() } } func Foo() { time.Sleep(50 * time.Millisecond) } func Bar() { time.Sleep(100 * time.Millisecond) }
操作步骤
go run main.go go tool pprof -http=:8080 cpu.pprof
在pprof Web界面左上角的下拉菜单中,可选择「Flame Graph」(旧版)和「Flame Graph (new)」(新版):
- 旧版样式:

- 新版样式:

版本信息
$ go version go version go1.21.1 darwin/arm64 $ dot -V dot - graphviz version 9.0.0 (20230911.1827)
回答
这不是本地配置问题,新版火焰图的统一粉色是预期设计。
pprof的新版火焰图采用了和旧版不同的配色逻辑:旧版会给不同函数、调用层级分配多彩颜色,而新版默认使用单一粉色调,仅通过颜色深浅区分函数的CPU耗时占比——颜色越深,代表该函数占用的CPU时间比例越高。
如果偏好旧版的多彩样式,有两个可选方案:
- 继续使用旧版的「Flame Graph」选项,当前Go版本中该选项仍保留可用;
- 导出pprof数据,使用Brendan Gregg的原版火焰图生成脚本
flamegraph.pl重新生成,该工具支持自定义配色方案。
Go 1.21引入的新版火焰图主要是为了优化渲染性能和逻辑,并非配置错误,你可以根据使用习惯自由选择样式。
内容的提问来源于stack exchange,提问作者landau
相关产品推荐
相关产品推荐

