Schwellenwerte & Alarme


Schwellenwerte sind der Weg, wie Sie Leistungsrückschritte in Bencher erfassen. Ein Schwellenwert wird einer eindeutigen Kombination aus Zweig, Testumgebung und Maßstab zugewiesen. Ein Schwellenwert muss eine untere Grenze, eine obere Grenze oder beides haben. Jede Grenze wird verwendet, um eine Grenzwertlimit zu berechnen. Dann wird jeder neue Maßstab gegen jedes Grenzwertlimit geprüft.

  • Untere Grenze
    • Eine untere Grenze wird verwendet, wenn ein kleinerer Wert eine Leistungsverschlechterung angeben würde, wie zum Beispiel bei der Durchsatzmessung.
  • Obere Grenze
    • Eine obere Grenze wird verwendet, wenn ein größerer Wert eine Leistungsverschlechterung angeben würde, wie zum Beispiel bei der Latenzmessung.

Es gibt verschiedene Arten von Schwellenwerten:

Alarme

Alarme werden generiert, wenn eine neue Metrik unterhalb einer Schwellenwertuntergrenze oder oberhalb einer Schwellenwertobergrenze liegt. Um einen CI-Build im Falle eines Alarms zu fehlschlagen, setzen Sie das --err Flag, wenn Sie den bencher run CLI-Unterbefehl verwenden.

Unterdrückung von Alarmen

Manchmal kann es nützlich sein, Alarme für einen bestimmten Benchmark zu unterdrücken. Die beste Möglichkeit, dies zu tun, besteht darin, einem der speziellen Suffixe zum Namen dieses Benchmarks hinzuzufügen:

  • _bencher_ignore
  • BencherIgnore
  • -bencher-ignore

Zum Beispiel, wenn Ihr Benchmark my_flaky_benchmark genannt wird, dann wäre es hilfreich, es in my_flaky_benchmark_bencher_ignore umzubenennen und somit würde genau dieser Benchmark ignoriert. Ignorierte Benchmarks werden nicht gegen die Schwelle geprüft, auch wenn eine vorhanden ist. Die Metriken für ignorierte Benchmarks werden jedoch weiterhin gespeichert. Beim Fortfahren mit unserem Beispiel würden die Ergebnisse von my_flaky_benchmark_bencher_ignore weiterhin in der Datenbank unter my_flaky_benchmark gespeichert. Wenn Sie das Suffix entfernen und zum ursprünglichen Benchmark-Namen zurückkehren, dann fangen die Dinge genau dort an, wo Sie aufgehört haben.

Statische Schwellenwerte

Ein statischer Schwellenwert ist der einfachste Schwellenwert. Wenn ein neuer Metrikwert unter einer gesetzten unteren Grenze oder über einer gesetzten oberen Grenze liegt, wird ein Alarm erzeugt. Das heißt, die untere/obere Grenze ist eine explizite untere/obere Grenzbegrenzung. Entweder muss eine untere Grenze, eine obere Grenze oder beides gesetzt werden. Statische Schwellenwerte funktionieren am besten, wenn der Wert der Metrik innerhalb eines konstanten Bereichs bleiben sollte, wie zum Beispiel bei Anweisungsanzahlen.

  • Untere Grenze des statischen Schwellenwerts

    • Eine untere Grenze des statischen Schwellenwerts kann eine beliebige Gleitkommazahl sein. Sie wird verwendet, wenn ein kleinerer Wert eine Leistungsverschlechterung anzeigen würde. Die untere Grenze muss kleiner oder gleich der oberen Grenze sein, wenn beide angegeben sind.
    • Zum Beispiel, wenn Sie einen statischen Schwellenwert mit einer unteren Grenze von 100 hätten, wäre die untere Grenzbegrenzung ebenfalls 100 und jeder Wert kleiner als 100 würde einen Alarm auslösen.
  • Obere Grenze des statischen Schwellenwerts

    • Eine obere Grenze des statischen Schwellenwerts kann eine beliebige Gleitkommazahl sein. Sie wird verwendet, wenn ein größerer Wert eine Leistungsverschlechterung anzeigen würde. Die obere Grenze muss größer oder gleich der unteren Grenze sein, wenn beide angegeben sind.
    • Zum Beispiel, wenn Sie einen statischen Schwellenwert mit einer oberen Grenze von 100 hätten, wäre die obere Grenzbegrenzung ebenfalls 100 und jeder Wert größer als 100 würde einen Alarm auslösen.

Statistische Schwellenwerte

Alle anderen Schwellenwerte sind statistische Schwellenwerte. Jeder statistische Schwellenwert verwendet historische Metriken und einen einzigartigen statistischen Signifikanztest, um zu bestimmen, ob eine Warnung generiert wird. Daher bedeutet die untere/obere Grenze bei verschiedenen statistischen Schwellenwerten unterschiedliche Dinge. Zusätzlich zur Festlegung einer unteren und/oder oberen Grenze gibt es Kontrollen, welche historischen Metriken verwendet werden (d.h. abgetastet).

  • Mindest-Stichprobengröße

    • Für einen statistischen Schwellenwert kann eine Mindest-Stichprobengröße festgelegt werden. Der statistische Schwellenwert führt seinen statistischen Signifikanztest nur durch, wenn die Anzahl der historischen Metriken größer oder gleich der Mindest-Stichprobengröße ist. Die Mindest-Stichprobengröße muss kleiner oder gleich der maximalen Stichprobengröße sein, falls beide angegeben sind.
  • Maximale Stichprobengröße

    • Für einen statistischen Schwellenwert kann eine maximale Stichprobengröße festgelegt werden. Der statistische Schwellenwert beschränkt sich nur auf die neuesten historischen Metriken, begrenzt durch die maximale Stichprobengröße für seinen statistischen Signifikanztest. Die maximale Stichprobengröße muss größer oder gleich der Mindest-Stichprobengröße sein, wenn beide angegeben sind.
  • Fenstergröße

    • Für einen statistischen Schwellenwert kann eine Fenstergröße in Sekunden festgelegt werden. Der statistische Schwellenwert beschränkt sich nur auf die neuesten historischen Metriken, begrenzt durch das gegebene Zeitfenster für seinen statistischen Signifikanztest.

Prozentschwellen

Eine Prozentschwelle ist die einfachste statistische Schwelle. Wenn eine neue Metrik unter einen bestimmten Prozentsatz des Mittelwerts (Untere Grenze) oder über einen bestimmten Prozentsatz des Mittelwerts (Obere Grenze) Ihrer historischen Metriken liegt, wird ein Alarm ausgelöst. Entweder muss eine untere Grenze, eine obere Grenze, oder beides gesetzt werden. Prozentschwellen funktionieren am besten, wenn der Wert der Metrik innerhalb eines bekannten guten Bereichs bleiben sollte.

  • Untere Grenze der Prozentschwelle

    • Eine untere Grenze der Prozentschwelle kann ein beliebiger Prozentsatz in Dezimalform sein, der größer oder gleich Null ist (z. B. verwenden Sie 0.10 für 10%). Es wird verwendet, wenn ein kleinerer Wert auf eine Leistungsverschlechterung hinweisen würde.
    • Zum Beispiel, wenn Sie eine Prozentschwelle mit einer unteren Grenze von 0.10 festgelegt hätten und Ihre historischen Metriken einen Mittelwert von 100 hatten, wäre das untere Grenzlimit 90 und jeder Wert unter 90 würde einen Alarm auslösen.
  • Obere Grenze der Prozentschwelle

    • Eine obere Grenze der Prozentschwelle kann ein beliebiger Prozentsatz in Dezimalform sein, der größer oder gleich Null ist (z. B. verwenden Sie 0.10 für 10%). Es wird verwendet, wenn ein größerer Wert auf eine Leistungsverschlechterung hinweisen würde.
    • Zum Beispiel, wenn Sie eine Prozentschwelle mit einer oberen Grenze von 0.10 festgelegt hätten und Ihre historischen Metriken einen Mittelwert von 100 hatten, wäre das obere Grenzlimit 110 und jeder Wert über 110 würde einen Alarm auslösen.
The Normal Distribution https://commons.wikimedia.org/wiki/File:The_Normal_Distribution.svg

z-Score Schwellenwerte

Ein z-Score Schwellenwert misst die Anzahl der Standardabweichungen (σ) anhand derer eine neue Metrik vom Durchschnitt Ihrer historischen Metriken mithilfe eines z-Scores bestimmt wird.

z-Score Schwellenwerte funktionieren am besten, wenn:

  • Es keine extremen Unterschiede zwischen Benchmark-Läufen gibt
  • Benchmark-Läufe völlig unabhängig voneinander sind
  • Die Anzahl der Iterationen für einen einzelnen Benchmark-Lauf weniger als 10% der historischen Metriken beträgt
  • Es mindestens 30 historische Metriken gibt (minimale Stichprobengröße >= 30)

Bei z-Score Schwellenwerten werden Standardabweichungen als kumulative Dezimalprozentsätze ausgedrückt. Wenn eine neue Metrik unter einem bestimmten kumulativen Prozentsatz auf der linken Seite (untere Grenze) oder über einem bestimmten kumulativen Prozentsatz auf der rechten Seite (obere Grenze) für Ihre historischen Metriken liegt, wird ein Alarm generiert. Es muss entweder eine untere Grenze, eine obere Grenze oder beides festgelegt werden.

  • z-Score Schwellenwert untere Grenze

    • Eine untere Grenze für den z-Score Schwellenwert kann jede positive Dezimalzahl zwischen 0.5 und 1.0 sein. Wo 0.5 den Mittelwert darstellt und 1.0 alle möglichen Werte auf der linken Seite (-∞). Es wird verwendet, wenn ein kleinerer Wert eine Leistungsverschlechterung anzeigen würde.
    • Wenn Sie beispielsweise einen z-Score Schwellenwert mit einer unteren Grenze von 0.977 verwendet und Ihre historischen Metriken hatten einen Durchschnitt von 100 und eine Standardabweichung von 10, wäre die untere Grenzlimite 80.05 und jeder Wert weniger als 80.05 würde einen Alarm generieren.
  • z-Score Schwellenwert obere Grenze

    • Eine obere Grenze für den z-Score Schwellenwert kann jede positive Dezimalzahl zwischen 0.5 und 1.0 sein. Wo 0.5 den Mittelwert darstellt und 1.0 alle möglichen Werte auf der rechten Seite (∞). Es wird verwendet, wenn ein größerer Wert eine Leistungsverschlechterung anzeigen würde.
    • Wenn Sie beispielsweise einen z-Score Schwellenwert mit einer oberen Grenze von 0.977 verwendet und Ihre historischen Metriken hatten einen Durchschnitt von 100 und eine Standardabweichung von 10, wäre die obere Grenzlimite 119.95 und jeder Wert größer als 119.95 würde einen Alarm generieren.

t-Test Schwellenwerte

Ein t-Test Schwellenwert misst das Konfidenzintervall (KI) dafür, wie wahrscheinlich es ist, dass eine neue Metrik über oder unter dem Durchschnitt Ihrer historischen Metriken liegt, und verwendet dafür einen Student’s t-Test.

t-Test Schwellenwerte funktionieren am besten, wenn:

  • Es gibt keine extremen Unterschiede zwischen Benchmark-Läufen
  • Benchmark-Läufe völlig unabhängig voneinander sind
  • Die Anzahl der Iterationen für einen einzelnen Benchmark-Lauf weniger als 10% der historischen Metriken ausmacht

Für t-Test Schwellenwerte werden Konfidenzintervalle als dezimales Vertrauensprozentsatz ausgedrückt. Wenn eine neue Metrik unter einem bestimmten linksseitigen Konfidenzprozentsatz (untere Grenze) oder über einem bestimmten rechtsseitigen Konfidenzprozentsatz (obere Grenze) für Ihre historischen Metriken liegt, wird ein Alarm ausgelöst. Entweder eine untere Grenze, eine obere Grenze oder beide müssen festgelegt werden.

  • Untere Grenze des t-Test-Schwellenwerts

    • Eine untere Grenze des t-Test Schwellenwerts kann eine positive Dezimalzahl zwischen 0.5 und 1.0 sein. 0.5 repräsentiert den Durchschnitt und 1.0 repräsentiert alle möglichen linksseitigen Werte (-∞). Sie wird verwendet, wenn ein kleinerer Wert eine Leistungsverschlechterung anzeigen würde.
    • Zum Beispiel, wenn Sie einen t-Test Schwellenwert mit einer unteren Grenze von 0.977 verwenden und Sie hatten 25 historische Metriken mit einem Durchschnitt von 100 und einer Standardabweichung von 10, dann wäre das untere Grenzlimit 78.96 und jeder Wert kleiner als 78.96 würde einen Alarm auslösen.
  • Obere Grenze des t-Test Schwellenwerts

    • Eine obere Grenze des t-Test Schwellenwerts kann jede positive Dezimalzahl zwischen 0.5 und 1.0 sein. 0.5 repräsentiert den Durchschnitt und 1.0 repräsentiert alle möglichen rechtsseitigen Werte (∞). Sie wird verwendet, wenn ein größerer Wert eine Leistungsminderung anzeigen würde.
    • Zum Beispiel, wenn Sie einen t-Test Schwellenwert mit einer oberen Grenze von 0.977 verwenden und Sie hatten 25 historische Metriken mit einem Durchschnitt von 100 und einer Standardabweichung von 10, dann wäre das obere Grenzlimit 121.04 und jeder Wert größer als 121.04 würde einen Alarm auslösen.
The Log Normal Distribution https://mathworld.wolfram.com/images/eps-svg/LogNormalDistribution_800.svg

Log-Normal-Verteilungs-Schwellenwerte

Ein Log-Normal-Verteilungs-Schwellenwert misst, wie wahrscheinlich es ist, dass eine neue Metrik über oder unter dem zentralen Wert Ihrer historischen Metriken liegt, unter Verwendung einer Log-Normal-Verteilung.

Log-Normal-Verteilungs-Schwellenwerte funktionieren am besten, wenn:

  • Benchmark-Durchläufe vollständig unabhängig voneinander sind
  • Die Anzahl der Iterationen für einen einzelnen Benchmark-Durchlauf weniger als 10% der historischen Metriken beträgt
  • Alle Daten positiv sind (der natürliche Logarithmus einer negativen Zahl ist undefined)

Bei Log-Normal-Verteilungs-Schwellenwerten wird die Wahrscheinlichkeit als dezimale Prozentsatz angegeben. Wenn eine neue Metrik unter einem bestimmten prozentualen Anteil auf der linken Seite (Untere Grenze) oder über einem bestimmten prozentualen Anteil auf der rechten Seite (Obere Grenze) Ihrer historischen Metriken liegt, wird ein Alarm ausgelöst. Es muss entweder eine untere Grenze, eine obere Grenze oder beide festgelegt werden.

  • Log-Normal-Verteilungs-Schwellenwert Untere Grenze

    • Eine untere Grenze für den Log-Normal-Verteilungs-Schwellenwert kann jede positive Dezimalzahl zwischen 0.5 und 1.0 sein. 0.5 stellt den zentralen Standort dar und 1.0 repräsentiert alle möglichen Werte auf der linken Seite (-∞). Es wird verwendet, wenn ein kleinerer Wert eine Leistungsverschlechterung anzeigen würde.
    • Wenn Sie beispielsweise einen Log-Normal-Verteilungs-Schwellenwert mit einer unteren Grenze von 0.977 verwendet haben und Sie hatten 25 historische Metriken um 100 zentriert und einen früheren Ausreißer bei 200, wäre die Untere Grenzgrenze 71.20 und jeder Wert kleiner als 71.20 würde einen Alarm auslösen.
  • Log-Normal-Verteilungs-Schwellenwert Obere Grenze

    • Eine obere Grenze für den Log-Normal-Verteilungs-Schwellenwert kann jede positive Dezimalzahl zwischen 0.5 und 1.0 sein. 0.5 stellt den zentralen Standort dar und 1.0 repräsentiert alle möglichen Werte auf der rechten Seite (∞). Es wird verwendet, wenn ein größerer Wert eine Leistungsverschlechterung anzeigen würde.
    • Wenn Sie beispielsweise einen Log-Normal-Verteilungs-Schwellenwert mit einer oberen Grenze von 0.977 verwendet haben und Sie hatten 25 historische Metriken um 100 zentriert und einen früheren Ausreißer bei 200, wäre die Obere Grenzgrenze 134.18 und jeder Wert größer als 134.18 würde einen Alarm auslösen.
Interquartile Range https://access.openupresources.org/curricula/our6-8math/embeds/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBbTRmIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--941ca9b24415706ee262cc85b237c99ba4ca015b/6.8.19.Images.student.summary.03_en.svg

Schwellenwerte des Interquartilsbereichs

Ein Schwellenwert des Interquartilsbereichs misst, wie viele Vielfache des Interquartilsbereichs (IQR) eine neue Metrik über oder unter dem Median Ihrer historischen Metriken liegt. Wenn eine neue Metrik unterhalb eines bestimmten Vielfachen des IQR vom Median (Untere Grenze) oder oberhalb eines bestimmten Vielfachen des IQR vom Median (Obere Grenze) Ihrer historischen Metriken liegt, wird ein Alarm ausgelöst. Entweder eine Untere Grenze, Obere Grenze, oder beides muss eingestellt werden.

  • Untere Grenze des Schwellenwerts des Interquartilsbereichs

    • Eine Untere Grenze des Schwellenwerts des Interquartilsbereichs kann ein beliebiger Multiplikator sein, der größer oder gleich Null ist (z.B.: benutzen Sie 2.0 für 2x). Sie wird verwendet, wenn ein kleinerer Wert eine Leistungseinbuße anzeigen würde.
    • Zum Beispiel, wenn Sie einen Schwellenwert des Interquartilsbereichs mit einer Unteren Grenze von 2.0 eingestellt haben und Ihre historischen Metriken einen Median von 100 und einen Interquartilsbereich von 10 hatten wäre das Limit der Unteren Grenze 80 und jeder Wert unter 80 würde einen Alarm auslösen.
  • Obere Grenze des Schwellenwerts des Interquartilsbereichs

    • Eine Obere Grenze des Schwellenwerts des Interquartilsbereichs kann ein beliebiger Multiplikator sein, der größer oder gleich Null ist (z.B.: benutzen Sie 2.0 für 2x). Sie wird verwendet, wenn ein höherer Wert eine Leistungseinbuße anzeigen würde.
    • Zum Beispiel, wenn Sie einen Schwellenwert des Interquartilsbereichs mit einer Oberen Grenze von 2.0 eingestellt haben und Ihre historischen Metriken einen Median von 100 und einen Interquartilsbereich von 10 hatten wäre das Limit der Oberen Grenze 120 und jeder Wert über 120 würde einen Alarm auslösen.

Delta Interquartile Range Thresholds

Ein Delta Interquartile Range Threshold misst, um wie viele Vielfache der durchschnittlichen prozentualen Änderung (Δ) Interquartilsabstand (IQR) ein neuer Metric über oder unter dem Median Ihrer historischen Metrics liegt. Wenn ein neuer Metric unterhalb einem bestimmten Vielfachen des ΔIQR vom Median (Untere Grenze) oder oberhalb einem bestimmten Vielfachen des ΔIQR vom Median (Obere Grenze) Ihrer historischen Metrics liegt, wird ein Alarm ausgelöst. Entweder eine Untere Grenze, Obere Grenze oder beides müssen eingestellt sein.

  • Delta Interquartile Range Threshold Untere Grenze

    • Eine Delta Interquartile Range Threshold Untere Grenze kann jeder Multiplikator sein, der größer oder gleich Null ist (z.B: nutzen Sie 2.0 für 2x). Sie wird verwendet, wenn ein kleinerer Wert eine Leistungsregression anzeigen würde.
    • Zum Beispiel, wenn Sie einen Delta Interquartile Range Threshold mit einer Unterer Grenze von 2.0 eingestellt haben und Ihre historischen Metrics hatten einen Median von 100, einen Interquartilabstand von 10 und einen durchschnittlichen Delta-Interquartilbereich von 0.2 (20%) wäre das Untere Grenzlimit 60 und jeder Wert kleiner als 60 würde einen Alarm auslösen.
  • Delta Interquartile Range Threshold Obere Grenze

    • Eine Delta Interquartile Range Threshold Obere Grenze kann jeder Multiplikator sein, der größer oder gleich Null ist (z.B: nutzen Sie 2.0 für 2x). Sie wird verwendet, wenn ein größerer Wert eine Leistungsregression anzeigen würde.
    • Zum Beispiel, wenn Sie einen Delta Interquartile Range Threshold mit einer Oberer Grenze von 2.0 eingestellt haben und Ihre historischen Metrics hatten einen Median von 100, einen Interquartilabstand von 10 und einen durchschnittlichen Delta-Interquartilbereich von 0.2 (20%) wäre das Obere Grenzlimit 140 und jeder Wert größer als 140 würde einen Alarm auslösen.


🐰 Herzlichen Glückwunsch! Sie haben alles über Schwellenwerte & Alarme gelernt! 🎉


Weitermachen: Kontinuierliches Benchmarking ➡

🤖 Dieses Dokument wurde automatisch von OpenAI GPT-4 generiert. Es ist möglicherweise nicht korrekt und kann Fehler enthalten. Wenn Sie Fehler finden, öffnen Sie bitte ein Problem auf GitHub.


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Wed, March 27, 2024 at 7:50:00 AM UTC