Соберём инструменты измерения в единый цикл: найти узкое место, сформулировать гипотезу, изменить код и сравнить результат.
- Инструментация и семплирование: способы сбора профилей и их ограничения.
- Сбор CPU-профиля локально и через HTTP, анализ в pprof CLI и Web.
- Граф вызовов, flame graph, показатели Flat и Cumulative.
- Профили heap и allocs: удерживаемая память и объём аллокаций.
- Mutex- и block-профили: конкуренция за блокировки и время ожидания.
- Execution trace: работа горутин, планировщика и сборщика мусора.
- Сравнение профилей, генерация нагрузки с Pandora и continuous profiling с Pyroscope.
- Profile-guided optimization (PGO): применение профиля к сборке приложения.
Практика на лекции: Собрать и сравнить профили двух версий программы, найти затраты CPU и памяти, исследовать блокировки и поведение GC, затем применить PGO.