为了账号安全,请及时绑定邮箱和手机立即绑定

Pprof 和 golang - 如何解释结果?

Pprof 和 golang - 如何解释结果?

Go
白板的微信 2021-11-08 15:43:52
我正在尝试在我的程序中使用 pprof,但是,我的结果与我阅读的文章(下面的链接)略有不同。在我的结果中,我得到了这样的表:(pprof) top101.65s of 1.72s total (95.93%)Showing top 10 nodes out of 114 (cum >= 0.01s)      flat  flat%   sum%        cum   cum%     1.19s 69.19% 69.19%      1.20s 69.77%  syscall.Syscall     0.16s  9.30% 78.49%      0.16s  9.30%  runtime._ExternalCode这是什么列:flat flat% sum% cum cum%?
查看完整描述

2 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

平 和 暨

假设有一个函数foo,它由3个函数和一个直接操作组成。


func foo(){

    a()                                 step1

    b()                                 step2

    do something directly.              step3

    c()                                 step4

}

想象一下,当你调用 function 时foo,需要 6 秒,时间分布如下。


func foo(){

    a()                                 // step1 takes 1s

    b()                                 // step2 takes 1s

    do something directly.              // step3 takes 3s

    c()                                 // step4 takes 1s

}

flat 将是在 step3 上花费的时间。

cum将是 foo 的总执行时间,其中包含子函数调用和直接操作。(cum = step1+ step2+ step3+ step4)

和%

当您top在 pprof 控制台中运行时,每一行输出代表在特定功能上花费的时间。Sum%表示前几行花费了多少时间/内存。


为了解释这个指标,我选择了另一个包含更多行的例子。的值sum%对于所述线是45.17%。它是这样计算的:


line1 19.33%

line2 13.27%

line3 6.60%

line4 5.97%

-----------

sum% 45.17%

//img1.sycdn.imooc.com//6188d55a00017f6106610194.jpg

sum%的应用

sum%可以帮助您快速识别大石头。下面是另一个内存分配报告的例子。

可以看到前四个函数消耗了 91.06% 的内存。如果我想做一些性能调优,我应该专注于前四个功能。可以忽略第四个以下的所有功能。

//img1.sycdn.imooc.com//6188d5760001d7b013120473.jpg

查看完整回答
反对 回复 2021-11-08
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

我知道我会为此受到抨击,但看看 GopherCon 的演讲;关于解释的一个这样的例子是here优步也有一个关于 pprof 的演讲



查看完整回答
反对 回复 2021-11-08
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信