awesome-everything EN
↑ Обратно к восхождению

Производительность

Статистические baseline''''ы: почему один запуск — не измерение

Суть Один прогон неотличим от шума. Репортируй медиану, p95, p99 по ≥5 прогонам с ДИ — иначе догадка в числовой одежде.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 12 min

«Этот PR делает сервис на 15% быстрее» — основано на одном прогоне на staging, добавлено к ревью. Это реально? Уровень шума в большинстве систем — 5-10% между идентичными прогонами. Без большего числа прогонов и перцентилей не понять.

Почему один прогон ненадёжен

Один и тот же сценарий, запущенный дважды, может отличаться на 5-10% из-за причин, не связанных с кодом:

  • Временны́е отличия GC (окна stop-the-world смещаются между прогонами)
  • Решения OS-планировщика (какое CPU-ядро, когда вытеснен)
  • Состояние кэша на старте прогона (L3 холодный vs тёплый)
  • Временные конкурентные обращения к сети или диску
  • Масштабирование частоты CPU на ноутбуках (троттлинг при тепловой нагрузке)

«15%-ное ускорение» из одного прогона не отличить от этого шума. Это может быть реальная победа, может быть совпадение — не скажешь.

Что репортировать вместо этого

  • Минимальное число прогонов: 5-10 для макробенча, 30+ для короткого микробенча.
  • Репортируй: медиану, p95 и p99 — не среднее. Среднее захвачено выбросами; медиана устойчива к ним.
  • Укажи разброс: стандартное отклонение или доверительный интервал.
  • Как выглядит защищаемый результат: «p99 задержки упал с 480 мс до 320 мс в пяти 5-минутных прогонах, p50 с 60 мс до 55 мс, с 95% ДИ ±15 мс на каждое измерение».

«10%-ное ускорение» реально только если медиана улучшилась на ≥10% И p95/p99 не деградировали.

Как репортируютПроблемаЛучшая альтернатива
Один прогон, одно числоНеотличимо от 5-10% естественного шума5+ прогонов, репортировать медиану + p99 + ДИ
Средняя задержкаОдин выброс искажает среднееМедиана + перцентили p95/p99
Только измерения на stagingСинтетическая нагрузка может не совпадать с productionStaging + подтверждение production-канарейкой

Почему среднее — неверная метрика

Распределения задержек имеют длинный хвост. Сервис, обрабатывающий 99% запросов за 50 мс, а 1% — за 2000 мс, имеет среднее около 70 мс — которое скрывает хвост в 2000 мс, испытываемый пользователями. Среднее захвачено выбросами в любую сторону. Медиана (p50) устойчива к выбросам; p99 описывает пользовательский опыт на хвосте.

Дисциплина: репортируй числа как учёный — с распределениями и неопределённостью, а не как маркетолог — с единственным процентным показателем.

Почему это работает

Дисциплина оправдывается больше всего, когда заявленная «победа» оказывается шумом. Команда, поймавшая шумовую победу до мерджа, экономит: churn от реверта «регрессии» позже, когда продакшен не показывает улучшения, время на постмортем деплоя, который ничего не сделал, и утрату доверия, когда команда узнаёт, что perf-цифрам без методологии нельзя верить.

Викторина

Команда репортирует «это изменение сделало сервис на 15% быстрее» на основе одного прогона на staging. Какой самый важный уточняющий вопрос?

Викторина

Почему средняя задержка — неверная метрика для репортирования производительности сервиса?

Викторина

Ты запускаешь микробенчмарк 1000 раз и вычисляешь среднее. Оно показывает улучшение на 12%. Какая дополнительная информация нужна, чтобы утверждать, что улучшение реально?

Вспомните перед уходом
  1. 01
    Почему репортирование единственного «X% ускорения» из одного прогона бенчмарка — красный флаг, и что следует репортировать вместо этого?
  2. 02
    Назови четыре основных источника шума в измерениях производительности и какие из них контролируемы.
Итог

Измерения производительности — распределения, а не отдельные числа. Уровень естественного шума — 5-10% между идентичными прогонами одного кода, из-за GC-таймирования, OS-планировщика, состояния кэша и временных конкурентных обращений. «15%-ное ускорение» из одного прогона статистически неотличимо от шума. Защищаемые репорты требуют медианы, p95 и p99 минимум по пяти прогонам с явными доверительными интервалами. Средняя задержка — неверная метрика, потому что она захвачена выбросами; медиана и хвостовые перцентили правильно описывают пользовательский опыт. Дисциплина репортирования диапазонов вместо отдельных значений выявляет шумовые победы до мерджа и строит доверие команды к perf-утверждениям.

Связанные уроки
встречается в159
Продолжить восхождение ↑История профайлеров и ловушки микробенчей: от Кнута до GWP
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.