Пороги & Оповещения
Пороговые значения позволяют вам отлавливать регрессии производительности в Bencher. Пороговое значение присваивается уникальной комбинации: Ветка, Тестовая площадка и Мера. Пороговое значение должно иметь нижнюю границу, верхнюю границу или обе. Каждая граница используется для расчета лимита границы. Затем каждый новый показатель проверяется по каждому лимиту границы.
- Нижняя граница
- Нижняя граница используется, когда меньшее значение указывает на регрессию производительности, как в случае с Measure Throughput.
- Верхняя граница
- Верхняя граница используется, когда большее значение указывает на регрессию производительности, как в случае с Measure Latency.
Существуют несколько типов пороговых значений:
Оповещения
Оповещения генерируются, когда новый показатель ниже нижнего предела Порога или выше верхнего предела Порога.
Чтобы провалить сборку 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
.
Если вы удалите суффикс и вернетесь к исходному имени Бенчмарка,
то все продолжится с того места, где вы остановились.
Статические пороги
Статический порог - это самый простой порог. Если новый показатель ниже установленной нижней границы или выше установленной верхней границы, генерируется предупреждение. То есть, нижняя/верхняя граница является явным ограничением нижней/верхней границы. Нужно установить либо нижнюю границу, верхнюю границу, либо обе. Статические пороги лучше всего работают, когда значение показателя должно оставаться в постоянном диапазоне, например, в количестве инструкций.
-
Нижняя граница статического порога
- Нижней границей статического порога может быть любое число с плавающей точкой. Он используется, когда меньшее значение указывало бы на регрессию производительности. Нижняя граница должна быть меньше или равна верхней границе, если обе указаны.
- Например, если у вас есть статический порог с нижней границей, установленной в
100
, то ограничение нижней границы также будет100
, и любое значение меньше100
будет генерировать предупреждение.
-
Верхняя граница статического порога
- Верхней границей статического порога может быть любое число с плавающей точкой. Он используется, когда большее значение указывало бы на регрессию производительности. Верхняя граница должна быть больше или равна нижней границе, если обе указаны.
- Например, если у вас есть статический порог с верхней границей, установленной в
100
, то ограничение верхней границы также будет100
, и любое значение больше100
будет генерировать предупреждение.
Статистические пороги
Все остальные пороги являются статистическими порогами. Каждый статистический порог использует исторические метрики и уникальный тест на статистическую значимость для определения, генерируется ли тревога. Следовательно, нижняя/верхняя граница означают разные вещи для разных статистических порогов. В дополнение к установке нижней и/или верхней границы, есть контролы, которые исторические метрики используются (то есть отбираются).
-
Минимальный размер выборки
- Минимальный размер выборки может быть установлен для статистического порога. Статистический порог будет запускать свой тест на статистическую значимость только если количество исторических метрик больше или равно минимальному размеру выборки. Минимальный размер выборки должен быть меньше или равен максимальному размеру выборки, если оба указаны.
-
Максимальный размер выборки
- Максимальный размер выборки может быть установлен для статистического порога. Статистический порог будет ограничивать себя только самыми последними историческими метриками, ограниченными максимальным размером выборки для его теста на статистическую значимость. Максимальный размер выборки должен быть больше или равен минимальному размеру выборки, если оба указаны.
-
Размер окна
- Размер окна в секундах может быть установлен для статистического порога. Статистический порог будет ограничивать себя только самыми последними историческими метриками, ограниченными заданным временным окном для его теста на статистическую значимость.
Пороги в процентах
Порог в процентах - это самый простой статистический порог. Если новый показатель ниже определенного процента от среднего значения (Нижняя граница) или выше определенного процента от среднего значения (Верхняя граница) ваших исторических показателей, генерируется оповещение. Должна быть установлена либо нижняя граница, либо верхняя граница, либо обе. Пороги в процентах работают лучше всего, когда значение показателя должно оставаться в известных приемлемых диапазонах.
-
Нижняя граница порога в процентах
- Нижняя граница порога в процентах может быть любым процентом, больше или равным нулю в десятичной форме (например, используйте
0.10
для10%
). Она используется, когда меньшее значение указывает на регрессию производительности. - Например, если у вас был порог в процентах с нижней границей, установленной на
0.10
, и среднее значение ваших исторических показателей составляло100
, предел нижней границы составит90
, и любое значение меньше90
сгенерирует оповещение.
- Нижняя граница порога в процентах может быть любым процентом, больше или равным нулю в десятичной форме (например, используйте
-
Верхняя граница порога в процентах
- Верхняя граница порога в процентах может быть любым процентом, больше или равным нулю в десятичной форме (например, используйте
0.10
для10%
). Она используется, когда большее значение указывает на регрессию производительности. - Например, если у вас был порог в процентах с верхней границей, установленной на
0.10
, и среднее значение ваших исторических показателей составляло100
, предел верхней границы составит110
, и любое значение больше110
сгенерирует оповещение.
- Верхняя граница порога в процентах может быть любым процентом, больше или равным нулю в десятичной форме (например, используйте
Пороги z-оценки
Порог z-оценки измеряет количество стандартных отклонений (σ) новой метрики от среднего значения ваших исторических метрик, используя z-оценку.
Пороги z-оценки работают лучше всего, когда:
- Нет крайних различий между прогонами бенчмарка
- Прогоны бенчмарка совершенно независимы друг от друга
- Количество итераций для одного прогона бенчмарка меньше 10% исторических метрик
- Есть по крайней мере 30 исторических метрик (минимальный размер выборки >= 30)
Для порогов z-оценки стандартные отклонения выражаются в виде десятичного накопительного процента. Если новая метрика ниже определенного левостороннего накопительного процента (Нижняя граница) или выше определенного правостороннего накопительного процента (Верхняя граница) по отношению к вашим историческим метрикам, то генерируется предупреждение. Должна быть установлена либо нижняя граница, либо верхняя граница, либо обе.
-
Нижняя граница порога z-оценки
- Нижняя граница порога z-оценки может быть любым положительным десятичным числом между
0.5
и1.0
. Где0.5
представляет среднее значение, а1.0
представляет все возможные левосторонние значения (-∞). Она используется, когда меньшее значение указывало бы на регрессию производительности. - Например, если вы использовали порог z-оценки с нижней границей
0.977
и ваши исторические метрики имели среднее значение100
и стандартное отклонение10
, то предел нижней границы будет80.05
и любое значение меньше80.05
вызовет предупреждение.
- Нижняя граница порога z-оценки может быть любым положительным десятичным числом между
-
Верхняя граница порога z-оценки
- Верхняя граница порога z-оценки может быть любым положительным десятичным числом между
0.5
и1.0
. Где0.5
представляет среднее значение, а1.0
представляет все возможные правосторонние значения (∞). Она используется, когда большее значение указывало бы на регрессию производительности. - Например, если вы использовали порог z-оценки с верхней границей
0.977
и ваши исторические метрики имели среднее значение100
и стандартное отклонение10
, то предел верхней границы будет119.95
и любое значение больше119.95
вызовет предупреждение.
- Верхняя граница порога z-оценки может быть любым положительным десятичным числом между
Пороги t-теста
Порог t-теста измеряет доверительный интервал (CI) для того, как вероятно, что новая Метрика выше или ниже среднего значения ваших исторических Метрик, используя t-тест Стьюдента.
Пороги t-теста работают лучше, когда:
- Нет экстремальных различий между прогонами бенчмарков
- Прогоны бенчмарков полностью независимы друг от друга
- Количество итераций для одного прогона бенчмарка составляет менее 10% от исторических Метрик
Для порогов t-теста доверительные интервалы выражаются в виде десятичного процента уверенности. Если новая Метрика ниже определенного процента уверенности слева (Нижняя Граница) или выше определенного процента уверенности справа (Верхняя Граница) для ваших исторических Метрик, генерируется оповещение. Необходимо установить либо Нижнюю Границу, Верхнюю Границу, либо обе.
-
Нижний порог t-теста
- Нижний порог t-теста может быть любым положительным десятичным числом между
0.5
и1.0
. Где0.5
представляет среднее значение, а1.0
представляет все возможные значения слева (-∞). Он используется, когда меньшее значение указывало бы на снижение производительности. - Например, если вы использовали порог t-теста с Нижней Границей
0.977
и у вас было25
исторических Метрик со средним значением100
и стандартным отклонением10
, Нижний Лимит Границы составит78.96
, и любое значение меньше78.96
вызовет оповещение.
- Нижний порог t-теста может быть любым положительным десятичным числом между
-
Верхний порог t-теста
- Верхний порог t-теста может быть любым положительным десятичным числом между
0.5
и1.0
. Где0.5
представляет среднее значение, а1.0
представляет все возможные значения справа (∞). Он используется, когда большее значение указывало бы на снижение производительности. - Например, если вы использовали порог t-теста с Верхней Границей
0.977
и у вас было25
исторических Метрик со средним значением100
и стандартным отклонением10
, Верхний Лимит Границы составит121.04
, и любое значение больше121.04
вызовет оповещение.
- Верхний порог t-теста может быть любым положительным десятичным числом между
Логнормальные пороги
Логнормальный порог измеряет вероятность того, что новый показатель будет выше или ниже центрального местоположения ваших исторических показателей, используя логнормальное распределение.
Логнормальные пороги работают лучше, когда:
- Запуски бенчмарков полностью независимы друг от друга
- Количество итераций для одного запуска бенчмарка меньше 10% от исторических показателей
- Все данные положительны (натуральный логарифм отрицательного числа не
определен
)
Для логнормальных порогов вероятность выражается в виде десятичного процентного соотношения. Если новый показатель ниже определенного процентного соотношения слева (Нижняя граница) или выше определенного процентного соотношения справа (Верхняя граница) для ваших исторических показателей, генерируется предупреждение. Должна быть установлена либо Нижняя граница, либо Верхняя граница, либо обе.
-
Нижняя граница логнормального порога
- Нижняя граница логнормального порога может быть любым положительным десятичным числом между
0.5
и1.0
. Где0.5
представляет центральное местоположение, а1.0
представляет все возможные значения слева (-∞). Она используется, когда меньшее значение указывало бы на ухудшение производительности. - Например, если вы использовали логнормальный порог с нижней границей
0.977
и у вас было25
исторических показателей, центрированных вокруг100
и одно предыдущее выбросное значение200
, то лимит нижней границы был бы71.20
, и любое значение меньше71.20
вызывало бы предупреждение.
- Нижняя граница логнормального порога может быть любым положительным десятичным числом между
-
Верхняя граница логнормального порога
- Верхняя граница логнормального порога может быть любым положительным десятичным числом между
0.5
и1.0
. Где0.5
представляет центральное местоположение, а1.0
представляет все возможные значения справа (∞). Она используется, когда большее значение указывало бы на ухудшение производительности. - Например, если вы использовали логнормальный порог с верхней границей
0.977
и у вас было25
исторических показателей, центрированных вокруг100
и одно предыдущее выбросное значение200
, то лимит верхней границы был бы134.18
, и любое значение больше134.18
вызывало бы предупреждение.
- Верхняя граница логнормального порога может быть любым положительным десятичным числом между
Пороги интерквартильного размаха
Интерквартильный размах измеряет, сколько множников интерквартильного размаха (IQR) новая метрика выше или ниже медианы ваших исторических метрик. Если новая метрика ниже определенного множества IQR от медианы (Нижняя граница) или выше определенного множества IQR от медианы (Верхняя граница) ваших исторических метрик, генерируется предупреждение. Должны быть установлены либо Нижняя граница, либо Верхняя граница, либо обе.
-
Нижняя граница интерквартильного размаха
- Нижняя граница интерквартильного размаха может быть любым множителем большим или равным нулю (например, используйте
2.0
для2x
). Она используется, когда меньшее значение указывает на снижение производительности. - Например, если у вас был порог интерквартильного размаха с нижней границей, установленной на
2.0
, и ваши исторические метрики имели медиану100
и интерквартильный размах10
, то Нижний предел был бы80
и любое значение меньше80
генерировало бы предупреждение.
- Нижняя граница интерквартильного размаха может быть любым множителем большим или равным нулю (например, используйте
-
Верхняя граница интерквартильного размаха
- Верхняя граница интерквартильного размаха может быть любым множителем большим или равным нулю (например, используйте
2.0
для2x
). Она используется, когда большее значение указывает на снижение производительности. - Например, если у вас был порог интерквартильного размаха с верхней границей, установленной на
2.0
, и ваши исторические метрики имели медиану100
и интерквартильный размах10
, то Верхний предел был бы120
и любое значение выше120
генерировало бы предупреждение.
- Верхняя граница интерквартильного размаха может быть любым множителем большим или равным нулю (например, используйте
Пороги Дельта Интерквартильного Размаха
Порог Дельта Интерквартильного Размаха измеряет, на сколько кратно среднее процентное изменение (Δ) интерквартильного размаха (IQR) новой метрики выше или ниже медианы ваших исторических метрик. Если новая метрика ниже определенного кратного ΔIQR от медианы (Нижняя Граница) или выше определенного кратного ΔIQR от медианы (Верхняя Граница) ваших исторических метрик, генерируется Сигнал. Необходимо установить либо Нижнюю границу, Верхнюю границу, либо обе.
-
Нижняя граница порога Дельта Интерквартильного Размаха
- Нижняя граница порога Дельта Интерквартильного Размаха может быть любым множителем больше или равным нулю (например: используйте
2.0
для2x
). Она используется, когда меньшее значение указывает на снижение производительности. - Например, если бы у вас был Порог Дельта Интерквартильного Размаха с Нижней Границей, установленной на
2.0
, и медианой исторических метрик равной100
, интерквартильным размахом10
и средним дельта интерквартильным размахом0.2
(20%
), допустимый Нижний предел был бы60
, и любое значение меньше60
вызывало бы Сигнал.
- Нижняя граница порога Дельта Интерквартильного Размаха может быть любым множителем больше или равным нулю (например: используйте
-
Верхняя граница порога Дельта Интерквартильного Размаха
- Верхняя граница порога Дельта Интерквартильного Размаха может быть любым множителем больше или равным нулю (например: используйте
2.0
для2x
). Она используется, когда большее значение указывает на снижение производительности. - Например, если бы у вас был Порог Дельта Интерквартильного Размаха с Верхней Границей, установленной на
2.0
, и медианой исторических метрик равной100
, интерквартильным размахом10
и средним дельта интерквартильным размахом0.2
(20%
), допустимый Верхний предел был бы140
, и любое значение больше140
вызывало бы Сигнал.
- Верхняя граница порога Дельта Интерквартильного Размаха может быть любым множителем больше или равным нулю (например: используйте
🐰 Поздравляем! Вы узнали все о Порогах и Оповещениях! 🎉