Golang pprof полный график вызовов

Я немного новичок в pprof, Я начал профилирование процессора и через некоторое время проверил топ25. Вот что я получил:

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

Я думал, что это все круто, мне просто нужно избавиться от этой функции времени. Потом понял, что я даже не использую ничего из времени pkg, так что это должна быть либо сторонняя библиотека, либо одна из внутренних функций go.

Итак, я сгенерировал график с -web флаг, чтобы я мог видеть, какая функция вызывает его, но он не показывает напрямую. Есть ли способ отследить, откуда он?

0 ответов

Я использую следующий подход, чтобы все увидеть.

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

Это может дать вам огромный график, за которым будет довольно сложно следить. Чтобы помочь с этим, вы можете нажать на проблемный узел в веб-представлении и выбрать "Фокус" в меню "Уточнить" в верхнем левом углу. Это обеспечивает представление об этом узле и всех его вызывающих и вызываемых объектах.

Ключевые параметры, которые нужно использовать, чтобы увидеть все:

--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>
Другие вопросы по тегам