вторник, 7 апреля 2020 г.

Профилирование в Golang, профили runtime/pprof

Профилирование полезно для определения дорогих или часто вызываемых разделов кода. Среда выполнения Go предоставляет данные профилирования в формате, ожидаемом инструментом визуализации pprof. Данные профилирования могут быть собраны во время тестирования с помощью go test или конечных точек, доступных из пакета net/http/pprof. Пользователи должны собирать данные профилирования и использовать инструменты pprof для фильтрации и визуализации основных путей кода.

Предопределенные профили, предоставляемые пакетом runtime/pprof:

  • cpu: профиль ЦП определяет, где программа тратит свое время, активно потребляя циклы ЦП (в отличие от сна или ожидания ввода-вывода).
  • heap: профиль кучи сообщает о распределении памяти; используется для мониторинга текущего и исторического использования памяти, а также для проверки утечек памяти.
  • threadcreate: профиль создания потока сообщает о разделах программы, которые ведут создание новых потоков ОС.
  • goroutine: профиль goroutine сообщает о следах стека (stack traces) всех текущих goroutines.
  • block: профиль block показывает, где блокирующиеся программы ожидают примитивы синхронизации (включая каналы таймера). Профиль block не включен по умолчанию; используйте runtime.SetBlockProfileRate, чтобы включить его.
  • mutex: профиль mutex сообщает о блокировках. Если вы считаете, что ваш процессор не используется полностью из-за мьютекса, используйте этот профиль. Профиль mutex не включен по умолчанию, используйте Runtime.SetMutexProfileFraction, чтобы включить его.

Читайте также:


Комментариев нет:

Отправить комментарий