Перейти к содержимому
12 / 15

Трассировка выполнения go tool trace: что она показывает

go tool trace показывает то, чего не видно ни в профиле, ни в метриках: что происходило во времени. Профиль отвечает «где потрачено процессорное время», трассировка — «почему горутина ничего не делала пятьдесят миллисекунд». В ней видны события планировщика, циклы сборщика мусора с их фазами, системные вызовы, блокировки на каналах и мьютексах, и всё это разложено по логическим процессорам на общей временной шкале. Применений три, и все про задержку, а не про пропускную способность. Простой процессоров: работа есть, а ядра не заняты — обычно узкое место в блокировках или в нехватке параллелизма. Задержка планирования: горутина готова, но ждёт своей очереди. Влияние сборщика: видно, попал ли всплеск задержки на цикл сборки. Плата ощутима: трассировка добавляет заметные накладные расходы и порождает большие файлы, поэтому снимают её короткими отрезками в несколько секунд.