Я ищу простое объяснение того, как работает gperftools. До сих пор это то, чему я научился:Как работает gperftools под капотом?
- Он запускает пробник-стоп-мир. Другими словами, он периодически останавливает профилированную программу для сбора информации.
- В библиотеке pprof Golang используется gperftools внизу.
Помимо общего обзора, вот некоторые конкретные вопросы, я бы получить ответы:
- ли gperftools в "event based profiler" или "instrumentation profiler". Из того, что я понимаю, эти профилировщики изменяют способ запуска программы и собирают образцы с помощью этих модификаций.
- На каком уровне в ОС отображается профиль gperftools? Профилирует ядро как SystemTap или perf?
- Безопасен ли gperftools для работы на сервере с высоким трафиком?
Я задаю этот вопрос, чтобы рассказать о накладных расходах, представленных с помощью pprof на сервере Go.
+1 Это не очень хорошо понято, насколько на самом деле являются информативные образцы проб, особенно если отдельные исследованы. К сожалению, это отсутствие понимания приводит к общему предположению, что требуется большое количество из них, и поэтому их необходимо суммировать (в периоды самообеспечения, кумулятивного времени, графика вызовов, графики пламени и т. Д.). Это очень легко для больших ускорений, чтобы скрыть в этих резюме, но они не могут скрыться от программиста, просто рассматривая небольшое количество образцов. [* Примеры. *] (Http://stackoverflow.com/a/25870103/23771) –
И SIGPROF генерируется интервальным таймером ['setitimer()') (http://man7.org/linux/man -pages/man2/setitimer.2.html) - https://github.com/gperftools/gperftools/blob/7822b5b0b9fa7e016e1f6b46ea86f26f4691a457/src/profile-handler.cc#L482 'setitimer (timer_type_, & timer, 0);' – osgx