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>