【发布时间】:2016-09-18 23:56:48
【问题描述】:
我正在使用 pprof 分析一个 Go 应用程序。
应用程序正在使用大约 4-10% 的 CPU,并让它运行一小会儿会产生大约 6-11kb 的配置文件。这表明它应该能够对一些活动进行采样。
但是,当我查看结果时,我看到以下内容:
$ go tool pprof --text bigproc
1.77s of 1.77s total ( 100%)
flat flat% sum% cum cum%
1.77s 100% 100% 1.77s 100%
$
似乎缺少有趣的信息。有什么问题?
这是在 linux 上,带有 google-perftools 的 go 版本 1.6.1 和 pprof 版本 2.2.1(如果重要的话)。
【问题讨论】:
-
您将不得不采样更长的 1.7 秒,尤其是在只有 4-10% cpu 的情况下。尝试采样几分钟。
-
我运行这个过程大约需要一分钟的挂钟时间。我猜输出中提到的 1.77 秒是 CPU 时间,所以不包括 CPU 空闲的时间(程序被阻塞或休眠)。不过我会尝试跑更长的时间!
-
通常在分析时强调要分析的代码路径,以便从那里获取尽可能多的样本,而不是空闲运行时。如果您只使用 4-10% 的 cpu,则 90-96% 的样本不会有任何好处。
-
当然这是下一步,但首先我需要确定代码的哪一部分需要改进。当然,我可以做出有根据的猜测,但如果分析人员能够在进一步研究之前验证该理论,那就太好了。
-
问题的原因在别处,但无论如何你都应该尝试增加采样时间,例如,在循环中执行几次相同的任务。
标签: performance go profiling pprof