Пороги & Оповещения


Пороговые значения позволяют вам отлавливать регрессии производительности в 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 сгенерирует оповещение.
The Normal Distribution https://commons.wikimedia.org/wiki/File:The_Normal_Distribution.svg

Пороги 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-оценки может быть любым положительным десятичным числом между 0.5 и 1.0. Где 0.5 представляет среднее значение, а 1.0 представляет все возможные правосторонние значения (∞). Она используется, когда большее значение указывало бы на регрессию производительности.
    • Например, если вы использовали порог z-оценки с верхней границей 0.977 и ваши исторические метрики имели среднее значение 100 и стандартное отклонение 10, то предел верхней границы будет 119.95 и любое значение больше 119.95 вызовет предупреждение.

Пороги 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-теста может быть любым положительным десятичным числом между 0.5 и 1.0. Где 0.5 представляет среднее значение, а 1.0 представляет все возможные значения справа (∞). Он используется, когда большее значение указывало бы на снижение производительности.
    • Например, если вы использовали порог t-теста с Верхней Границей 0.977 и у вас было 25 исторических Метрик со средним значением 100 и стандартным отклонением 10, Верхний Лимит Границы составит 121.04, и любое значение больше 121.04 вызовет оповещение.
The Log Normal Distribution https://mathworld.wolfram.com/images/eps-svg/LogNormalDistribution_800.svg

Логнормальные пороги

Логнормальный порог измеряет вероятность того, что новый показатель будет выше или ниже центрального местоположения ваших исторических показателей, используя логнормальное распределение.

Логнормальные пороги работают лучше, когда:

  • Запуски бенчмарков полностью независимы друг от друга
  • Количество итераций для одного запуска бенчмарка меньше 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 вызывало бы предупреждение.
Interquartile Range https://access.openupresources.org/curricula/our6-8math/embeds/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBbTRmIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--941ca9b24415706ee262cc85b237c99ba4ca015b/6.8.19.Images.student.summary.03_en.svg

Пороги интерквартильного размаха

Интерквартильный размах измеряет, сколько множников интерквартильного размаха (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 вызывало бы Сигнал.


🐰 Поздравляем! Вы узнали все о Порогах и Оповещениях! 🎉


Продолжайте: Непрерывное Бенчмаркинг ➡

🤖 Этот документ был автоматически создан OpenAI GPT-4. Оно может быть неточным и содержать ошибки. Если вы обнаружите какие-либо ошибки, откройте проблему на GitHub.