Пороги & Оповещения
Пороги могут быть созданы для уникальной комбинации Вида Метрики, Ветки и Тестового Полотна. Это статистические тесты на значимость, которые используют либо Z-score или t-тест Стьюдента для обнаружения ухудшений производительности и генерации Оповещений. Когда Метрика ниже Нижней Границы Порога или выше Верхней Границы Порога, генерируется Оповещение для этой Метрики.
Пороги работают лучше всего, когда:
- Нет экстремальных различий между запусками бенчмарков
- Запуски бенчмарков полностью независимы друг от друга
- Количество итераций для одного запуска бенчмарка меньше 10% от исторических Метрик
Если исторических Метрик для комбинации Вида Метрики, Ветки и Тестового Полотна меньше 30, то следует использовать Порог t-теста Стьюдента и не Порог Z-score.
🐰 Не паникуйте! Все станет ясно через минуту.
Тест на статистическую значимость
Z-score
Z-score измеряет, сколько стандартных отклонений (σ) данная Метрика выше или ниже среднего по историческим Метрикам. Стандартное отклонение (σ) также можно выразить как нижнюю границу или верхнюю границу кумулятивного процента.
Например, два стандартных отклонения (2σ) это то же самое, что и верхний граница кумулятивного процента 97,7%, как показано выше.
При создании Порогов Z-score используется десятичное обозначение кумулятивного процента.
В этом примере, верхняя граница кумулятивного процента 97,7% будет Верхней Границей 0.977
.
На практике такой Порог будет полезен для Вида Метрики Латентности.
То есть, большее значение будет указывать на ухудшение производительности.
Когда меньшее значение указывает на ухудшение производительности, как в случае с Видом Метрики Пропускной Способности,
следует использовать нижний границу кумулятивного процента.
Нижняя граница кумулятивного процента 97,7% соответствует двум стандартным отклонениям ниже среднего (-2σ).
Это будет дано в десятичном обозначении как Нижняя Граница 0.977
.
🐰 Подсказка: При использовании Порога Z-score установите Минимальный Размер Выборки как минимум 30.
t-тест Стьюдента
t-тест Стьюдента измеряет, насколько вероятно, что данная Метрика выше или ниже среднего по историческим Метрикам. Эта вероятность называется доверительным интервалом (CI). Доверительный интервал (CI) выражается как нижняя граница или верхняя граница доверительного процента.
Например, верхнее граница доверительного процента 95,0% указывает, что 95,0% Метрик должны быть меньше ожидаемого максимума.
При создании Порогов t-теста используется десятичное обозначение доверительного процента.
В этом примере, верхняя граница доверительного процента 95,0% будет Верхней Границей 0.95
.
На практике такой Порог будет полезен для Вида Метрики Латентности.
То есть, большее значение будет указывать на ухудшение производительности.
Когда меньшее значение указывает на ухудшение производительности, как в случае с Видом Метрики Пропускной Способности,
следует использовать нижнюю границу доверительного процента.
Нижняя граница доверительного процента 95,0% указывает, что Метрики должны быть больше ожидаемого минимума.
Это будет дано в десятичном обозначении как Нижняя Граница 0.95
.
🐰 Подсказка: Используйте Порог t-теста, если у вас менее 30 исторических Метрик.
Граница статистической значимости
Значение границы статистической значимости зависит от теста на статистическую значимость:
- Z-score: Стандартное отклонение (σ) выраженное в десятичном кумулятивном проценте
- t-тест: Доверительный интервал (CI) выраженный в десятичном доверительном проценте
Каждая Метрика проверяется по Границе статистической значимости Порога, если она существует. Это может включать Нижнюю Границу, Верхнюю Границу или обе. Для каждой Границы рассчитывается Лимит Границы. Этот Лимит Границы затем сравнивается с текущей Метрикой. Если Метрика выходит за пределы Лимита Границы, генерируется Оповещение.
🐰 Подсказка: Чтобы прервать сборку CI при нарушении границы, используйте флаг
--err
для подкоманды CLIbencher run
.
Нижняя Граница
Для Порога можно установить нижнюю границу.
Она используется, когда меньшее значение указывает на ухудшение производительности,
как, например, с Видом Метрики Пропускной Способности.
Значение должно быть десятичным числом между 0.5
и 1.0
.
Например, если вы использовали Z-score и у ваших исторических Метрик была средняя 100
и стандартное отклонение 10
,
то Нижняя Граница 0.977
создаст Лимит Нижней Границы на 80.05
.
Любое значение меньше 80.05
вызовет Оповещение.
Верхняя Граница
Для Порога можно установить верхнюю границу.
Она используется, когда большее значение указывает на ухудшение производительности,
как, например, с Видом Метрики Латентности.
Значение должно быть десятичным числом между 0.5
и 1.0
.
Например, если вы использовали Z-score и у ваших исторических Метрик была средняя 100
и стандартное отклонение 10
,
то Верхняя Граница 0.977
создаст Лимит Верхней Границы на 119.95
.
Любое значение больше 119.95
вызовет Оповещение.
Размер выборки
Минимальный размер выборки
Возможно установить минимальный размер выборки для Порога. Порог будет запускать тест на статистическую значимость только если количество исторических Метрик больше или равно минимальному размеру выборки.
Максимальный размер выборки
Можно установить максимальный размер выборки для Порога. Порог будет ограничиваться только самыми последними историческими Метриками, ограниченными максимальным размером выборки для его теста на статистическую значимость.
Размер окна
Можно установить размер окна в секундах для Порога. Порог будет ограничиваться только самыми последними историческими Метриками, ограниченными заданным временным окном для его теста на статистическую значимость.
Оповещения
Оповещения генерируются, когда Метрика ниже Лимита Нижней Границы Порога или выше Лимита Верхней Границы Порога.
Чтобы прервать сборку CI в случае Оповещения, установите флаг --err
при использовании подкоманды CLI bencher run
.
Подавление Оповещений
Иногда может быть полезно подавить Оповещения для определенного Бенчмарка. Лучший способ сделать это - добавить одно из этих специальных суффиксов к имени этого Бенчмарка:
_bencher_ignore
BencherIgnore
-bencher-ignore
Например, если ваш Бенчмарк назывался my_flaky_benchmark
, то его переименование в my_flaky_benchmark_bencher_ignore
будет игнорировать только этот конкретный Бенчмарк в дальнейшем.
Игнорируемые Бенчмарки не проверяются по Порогу, даже если он существует.
Однако метрики для игнорируемых Бенчмарков все равно хранятся.
Продолжая наш пример, результаты из my_flaky_benchmark_bencher_ignore
все равно будут сохранены в базе данных под именем my_flaky_benchmark
.
Если вы удаляете суффикс и возвращаетесь к оригинальному имени Бенчмарка,
то все продолжится там, где вы остановились.
🐰 Поздравляем! Вы узнали все о Порогах и Оповещениях! 🎉