简体   繁体   English

Golang pprof完整调用图

[英]Golang pprof full call graph

I'm kinda new to pprof . 我对pprof有点pprof I've started CPU profiling, and after a bit of time checked the top25. 我已经开始进行CPU性能分析,并在一段时间后检查了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. 然后意识到,从pkg开始我什至没有使用任何东西,因此它必须是第三方lib或go内部函数之一。

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. 因此,我使用-web标志生成了图形,因此可以看到哪个函数调用了该图形,但实际上并没有直接显示它。 Is there any way to track it down where it's coming from? 有什么方法可以追踪它的来源吗?

I've been using the following approach to see everything. 我一直在使用以下方法查看所有内容。

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

This can give you a huge graph which can be quite difficult to follow. 这会给您一个巨大的图形,可能很难遵循。 To help with that you can click on the offending node in the web view and select 'Focus' from the 'Refine' menu in the top left corner. 为此,您可以在Web视图中单击有问题的节点,然后从左上角的“ Refine”菜单中选择“ Focus”。 This provides a view of that node and all its callers and callees. 这提供了该节点及其所有调用者和被调用者的视图。

The key options to use in order to see everything are: 为了查看所有内容而使用的关键选项是:

--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]

You can also use -focus on the command line to speed up rendering of large graphs. 您还可以在命令行上使用-focus来加快大型图形的渲染速度。

--focus=<regexp> Focus on nodes matching <regexp>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM