閾値とアラート
しきい値は、Bencherでパフォーマンスの退行をキャッチする方法です。 しきい値は、ブランチ、テストベッド、メジャーの一意の組み合わせに割り当てられます。 しきい値には下限、上限、または両方が必要です。 各境界は、境界限界を計算するために使用されます。 その後、新しいメトリックはそれぞれの境界限界に対してチェックされます。
- 下限
- 下限は、値が小さいとパフォーマンスが退行を示す場合に使用されます。例えば、スループットメジャーに対してです。
- 上限
- 上限は、値が大きいとパフォーマンスが退行を示す場合に使用されます。例えば、レイテンシメジャーに対してです。
いくつかのタイプのしきい値があります:
アラート
新しいメトリクスがしきい値の下限または上限を超えた場合にアラートが生成されます。
アラートの発生時に CI ビルドを失敗させるには、bencher run
CLIサブコマンドを使用する際に --err
フラグを設定します。
アラートの抑制
特定のベンチマークのアラートを抑制したい場合があります。 これを行う最善の方法は、ベンチマークの名前に以下の特殊な接尾辞のいずれかを追加することです:
_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
を超える任意の値がアラートを生成します。
統計的閾値
他のすべての閾値は統計的閾値です。 各統計的閾値は、過去のメトリクスと独自の統計的有意検定を使用して、アラートが生成されるかどうかを決定します。 したがって、下限/上限は、異なる統計的閾値に対して異なる意味を持ちます。 下限と/または上限を設定する他に、使用する過去のメトリクスを制御する方法(つまり、サンプリング)があります。
-
最小サンプルサイズ
- 統計的閾値の最小サンプルサイズを設定できます。 統計的閾値は、過去のメトリクスの数が最小サンプルサイズ以上の場合にのみ、統計的有意検定を実行します。 最小サンプルサイズは、最大サンプルサイズ以下でなければなりません。両方が指定されている場合。
-
最大サンプルサイズ
- 統計的閾値の最大サンプルサイズを設定できます。 統計的閾値は、最新の履歴メトリクスにのみ自身を制限し、その統計的有意検定のための最大サンプルサイズで制限されます。 最大サンプルサイズは、最小サンプルサイズ以上でなければなりません。両方が指定されている場合。
-
ウィンドウサイズ
- 統計的閾値のウィンドウサイズ(秒)を設定できます。 統計的閾値は、指定された時間ウィンドウで境界付けられた最新の過去のメトリクスにのみ制限します。 その統計的有意検定のため。
パーセンテージ閾値
パーセンテージ閾値は、最もシンプルな統計的閾値です。 新しいメトリクスが過去のメトリクスの平均の一定のパーセンテージ以下(下限) または一定のパーセンテージ以上(上限)である場合にアラートが生成されます。 下限、上限、または両方を設定する必要があります。 パーセンテージ閾値は、メトリクスの値が既知の良い範囲内に収まる場合に最適です。
-
パーセンテージ閾値下限
- パーセンテージ閾値の下限は、ゼロ以上の任意のパーセンテージを十進数形式で指定できます(例:
10%
は0.10
として使用)。 これは、小さい値がパフォーマンスの後退を示す場合に使用されます。 - 例えば、あなたが下限を
0.10
に設定したパーセンテージ閾値を持っていて、過去のメトリクスの平均が100
だった場合、下限の制限値は90
となり、90
未満の値はアラートを生成します。
- パーセンテージ閾値の下限は、ゼロ以上の任意のパーセンテージを十進数形式で指定できます(例:
-
パーセンテージ閾値上限
- パーセンテージ閾値の上限は、ゼロ以上の任意のパーセンテージを十進数形式で指定できます(例:
10%
は0.10
として使用)。 これは、大きな値がパフォーマンスの後退を示す場合に使用されます。 - 例えば、あなたが上限を
0.10
に設定したパーセンテージ閾値を持っていて、過去のメトリクスの平均が100
だった場合、上限の制限値は110
となり、110
以上の値はアラートを生成します。
- パーセンテージ閾値の上限は、ゼロ以上の任意のパーセンテージを十進数形式で指定できます(例:
z-スコアの閾値
z-スコアの閾値は、新しいメトリクスが標準偏差(σ)を基に、過去のメトリクスの平均からどの程度離れているかを測定するためのものです。これは、z-スコアを用いて計算されます。
z-スコアの閾値は以下の条件下で最も効果的です:
- ベンチマーク実行間に極端な差がない
- ベンチマークの実行が全く互いに依存していない
- 単一のベンチマーク実行の繰り返し回数が、過去のメトリクスの10%未満
- 過去のメトリクスが少なくとも30件ある(最小サンプルサイズ >= 30)
z-スコアの閾値では、標準偏差は小数点以下の累積パーセンテージとして表されます。 新しいメトリクスが特定の左側累積パーセンテージ(下限)以下、または特定の右側累積パーセンテージ(上限)以上である場合、過去のメトリクスに対するアラートが生成されます。 下限、上限、または両方が設定されている必要があります。
-
z-スコア閾値の下限
- z-スコア閾値の下限は、
0.5
と1.0
の間の任意の正の小数にすることができます。ここで、0.5
は平均を表し、1.0
はすべての可能な左側の値(-∞)を表します。 より小さい値はパフォーマンスの劣化を示す場合に使用されます。 - 例えば、下限を
0.977
に設定したz-スコア閾値を使用し、過去のメトリクスの平均が100
で標準偏差が10
だった場合、下限は80.05
となり、80.05
未満の任意の値はアラートを生成します。
- z-スコア閾値の下限は、
-
z-スコア閾値の上限
- z-スコア閾値の上限は、
0.5
と1.0
の間の任意の正の小数にすることができます。ここで、0.5
は平均を表し、1.0
はすべての可能な右側の値(∞)を表します。 より大きい値はパフォーマンスの劣化を示す場合に使用されます。 - 例えば、上限を
0.977
に設定したz-スコア閾値を使用し、過去のメトリクスの平均が100
で標準偏差が10
だった場合、上限は119.95
となり、119.95
を超える任意の値はアラートを生成します。
- z-スコア閾値の上限は、
t-テスト 閾値
t-テストの閾値は、新しいメトリックが歴史的なメトリックの平均値よりも上か下かにある可能性がどの程度あるかを、信頼区間 (CI) で測定します。これは Student’s t-テスト を使用して行います。
t-テストの閾値は、次の場合に最も効果的です:
- ベンチマークの実行間で極端な差分がない
- ベンチマークの実行が完全に独立している
- 単一のベンチマークの実行回数が歴史的なメトリックの10%未満である
t-テストの閾値では、信頼区間は10進数の信頼パーセンテージとして表現されます。 新しいメトリックが歴史的なメトリックの特定の左側信頼パーセンテージ(下限)以下または特定の右側信頼パーセンテージ(上限)以上である場合、アラートが生成されます。 下限、上限、または両方を設定する必要があります。
-
t-テスト 閾値 下限
- t-テストの閾値下限は
0.5
から1.0
までの任意の正の10進数にすることができます。ここで、0.5
は平均を、1.0
は可能な全ての左側の値(-∞)を表します。これは、より小さい値がパフォーマンスの退行を示す場合に使用されます。 - 例えば、あなたが下限
0.977
の t-テストの閾値を使用し、25
の歴史的なメトリックが平均100
、標準偏差10
の場合、下限の限界は78.96
となり、78.96
より小さい値はアラートを生成します。
- t-テストの閾値下限は
-
t-テスト 閾値 上限
- t-テストの閾値上限は、
0.5
から1.0
までの任意の正の10進数にすることができます。ここで、0.5
は平均を、1.0
は可能な全ての右側の値(∞)を表します。これは、より高い値がパフォーマンスの退行を示す場合に使用されます。 - 例えば、あなたが上限
0.977
の t-テストの閾値を使用し、25
の歴史的なメトリックが平均100
、標準偏差10
の場合、上限の限界は121.04
となり、121.04
より大きい値はアラートを生成します。
- t-テストの閾値上限は、
ログ正規閾値
ログ正規閾値は、新しいメトリクスが過去のメトリクスの中心位置より上か下かをログ正規分布を用いて測定します。
ログ正規閾値は以下の場合に最適です:
- ベンチマークの実行が全く独立している
- 一回のベンチマーク実行の繰り返し回数が過去のメトリクスの10%以下である
- 全てのデータが正(負の数の自然対数は
未定義
である)
ログ正規閾値の場合、尤度は十進パーセンテージとして表現されます。 新しいメトリックが過去のメトリクスの一定の左側パーセンテージ(下限)以下あるいは一定の右側パーセンテージ(上限)以上である場合、アラートが生成されます。 下限、上限、あるいは両方を設定する必要があります。
-
ログ正規閾値下限
- ログ正規閾値下限は、
0.5
から1.0
の間の任意の正の十進数とすることができます。ここで0.5
は中心位置を表し、1.0
は全ての可能な左側の値(-∞)を表します。これは、より小さい値がパフォーマンスの劣化を示す場合に使用されます。 - 例えば、ログ正規閾値の下限を
0.977
とし、過去のメトリクスを100
を中心に25
、一つ前の外れ値を200
とした場合、下限は71.20
となり、71.20
未満の値があるとアラートが生成されます。
- ログ正規閾値下限は、
-
ログ正規閾値上限
- ログ正規閾値上限は、
0.5
から1.0
の間の任意の正の十進数とすることができます。0.5
は中心位置を表し、1.0
は全ての可能な右側の値(∞)を表します。これは、より大きな値がパフォーマンスの劣化を示す場合に使用されます。 - 例えば、ログ正規閾値の上限を
0.977
とし、過去のメトリクスを100
を中心に25
、一つ前の外れ値を200
とした場合、上限は134.18
となり、134.18
よりも大きな値があるとアラートが生成されます。
- ログ正規閾値上限は、
四分位範囲閾値
四分位範囲閾値は、新たなメトリクスが歴史的なメトリクスの中央値に対して何倍の四分位範囲(IQR)以上または以下であるかを測定します。新たなメトリクスが、ある倍数のIQRよりも中央値から下(下限)または上(上限)にある場合、アラートが生成されます。下限、上限、または両者のいずれかを設定しなければなりません。
-
四分位範囲閾値下限
- 四分位範囲閾値の下限は、ゼロ以上の任意の乗数であることができます(例:
2x
のために2.0
を使用する)。これは、より小さい値がパフォーマンスの後退を示す場合に使用されます。 - 例えば、下限が
2.0
に設定された四分位範囲閾値があり、歴史的なメトリクスの中央値が100
で四分位範囲が10
だった場合、下限の上限は80
となり、80
未満の任意の値がアラートを生成します。
- 四分位範囲閾値の下限は、ゼロ以上の任意の乗数であることができます(例:
-
四分位範囲閾値上限
- 四分位範囲閾値の上限は、ゼロ以上の任意の乗数であることができます(例:
2x
のために2.0
を使用する)。これは、より大きな値がパフォーマンスの後退を示す場合に使用されます。 - 例えば、上限が
2.0
に設定された四分位範囲閾値があり、歴史的なメトリクスの中央値が100
で四分位範囲が10
だった場合、上限の下限は120
となり、120
以上の任意の値がアラートを生成します。
- 四分位範囲閾値の上限は、ゼロ以上の任意の乗数であることができます(例:
デルタ四分位範囲しきい値
デルタ四分位範囲しきい値は、新たなメトリックが、過去のメトリックの中央値に対してどれくらいの平均パーセンテージ変化 (∆) 四分位範囲(IQR)を上回っているか、または下回っているかを測定します。 新たなメトリックが過去のメトリックの中央値からの特定の倍数の∆IQR(下界) あるいは過去のメトリックの中央値からの特定の倍数の∆IQR(上界)未満、または以上であれば、アラートが生成されます。 下界、上界、または両方を設定する必要があります。
-
デルタ四分位範囲しきい値下界
- デルタ四分位範囲しきい値の下界は、ゼロ以上の任意の乗数にすることができます(例:
2x
は2.0
を使用します)。 これは、より小さい値がパフォーマンスの退行を示す場合に使用されます。 - たとえば、下界が
2.0
に設定されたデルタ四分位範囲しきい値があり、過去のメトリックが中央値100
、四分位範囲10
、平均デルタ四分位範囲が0.2
(20%
)だった場合、 下界の制限は60
となり、60
未満の値はアラートを生成します。
- デルタ四分位範囲しきい値の下界は、ゼロ以上の任意の乗数にすることができます(例:
-
デルタ四分位範囲しきい値上界
- デルタ四分位範囲しきい値の上界は、ゼロ以上の任意の乗数にすることができます(例:
2x
は2.0
を使用します)。 これは、より大きな値がパフォーマンスの退行を示す場合に使用されます。 - たとえば、上界が
2.0
に設定されたデルタ四分位範囲しきい値があり、過去のメトリックが中央値100
、四分位範囲10
、平均デルタ四分位範囲が0.2
(20%
)だった場合、 上界の制限は140
となり、140
以上の値はアラートを生成します。
- デルタ四分位範囲しきい値の上界は、ゼロ以上の任意の乗数にすることができます(例:
🐰 おめでとうございます!閾値とアラートについてすべて学びました! 🎉