Профилирование полезно для определения дорогих или часто вызываемых разделов кода. Среда выполнения 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, чтобы включить его.
Читайте также:
- Исследование утечек памяти в Golang с помощью pprof
- Диагностика в Golang
- Работа с гонками данных (data race) в Golang
Комментариев нет:
Отправить комментарий