1

I'm kinda new to pprof. I've started CPU profiling, and after a bit of time checked the top25. This is what I got:

Showing top 25 nodes out of 174
      flat  flat%   sum%        cum   cum%
  1.01mins 21.92% 21.92%   1.10mins 23.83%  time.Time.AppendFormat
  0.26mins  5.56% 27.48%   0.26mins  5.56%  type..eq.[65]runtime.sigTabT
  0.23mins  5.07% 32.55%   0.23mins  5.07%  type..hash.[3]runtime.symbol_key
  0.15mins  3.14% 35.69%   0.15mins  3.14%  type..hash.[9]string
  ...

I thought that's all cool, I just need to get rid of that time function. Then realized, I don't even use anything from the time pkg, so it must be either a third party lib, or one of the go internal functions.

So I've generated the graph with the -web flag, so I can see which function calls it, but it doesn't really show directly. Is there any way to track it down where it's coming from?

4

1 回答 1

3

我一直在使用以下方法来查看所有内容。

go tool pprof -http :9999 -edgefraction 0 -nodefraction 0 -nodecount 100000 cpu.prof

这可以给你一个巨大的图表,很难理解。为了帮助解决这个问题,您可以单击 Web 视图中的违规节点,然后从左上角的“优化”菜单中选择“焦点”。这提供了该节点及其所有调用者和被调用者的视图。

用于查看所有内容的关键选项是:

--nodecount=<n>    Show at most so many nodes [default=80]
--nodefraction=<f> Hide nodes below <f>*total [default=.005]
--edgefraction=<f> Hide edges below <f>*total [default=.001]

您还可以-focus在命令行上使用来加速大型图形的渲染。

--focus=<regexp> Focus on nodes matching <regexp>
于 2019-10-19T01:39:03.367 回答