Google pprof 的奇怪粉红色火焰图

问题描述 投票:0回答:1

Google 中的“新”火焰图

pprof
在我的机器(Mac OS 10)上都是粉红色的。这应该发生吗?它不像旧的火焰图那么好,所以我想知道我这边是否有什么配置不正确。

这是我使用的 Go 程序示例:

package main

import (
    "os"
    "runtime/pprof"
    "time"
)

func main() {
    // Create CPU profile file
    f, err := os.Create("cpu.pprof")
    if err != nil {
        panic(err)
    }
    defer f.Close()

    // Start CPU profiling
    pprof.StartCPUProfile(f)
    defer pprof.StopCPUProfile()

    // Simulated workload
    for i := 0; i < 100; i++ {
        Foo()
        Bar()
    }
}

func Foo() {
    time.Sleep(50 * time.Millisecond)
}

func Bar() {
    time.Sleep(100 * time.Millisecond)
}

我运行了程序并在输出上启动了

pprof
服务器:

go run main.go
go tool pprof -http=:8080 cpu.pprof

左上角的下拉菜单允许我选择“火焰图”和“火焰图(新)”。前者是我喜欢的类型:

后者不太好:

版本等:

$ go version
go version go1.21.1 darwin/arm64
$ dot -V
dot - graphviz version 9.0.0 (20230911.1827)
go profiling pprof
1个回答
0
投票

新火焰图中的颜色由包装决定,因为您的配置文件主要显示

runtime
包装,这就是您看到的单色。

我猜由于睡眠调用,在扫描 Goroutine 的痕迹时看不到你的主 Goroutine。您可以尝试用一些更繁忙的循环替换它们(做一些浮动数学,计算 PI 等,在前面构建尽可能多的

0
等)。

我个人现在更喜欢新的图表,因为它在单击堆栈框架时将多个调用站点分组,并让我看到聚合的所有调用者和下游事物。

© www.soinside.com 2019 - 2024. All rights reserved.