Schwellenwerte & Alarme


Schwellenwerte können für die einzigartige Kombination aus Metrikart, Branch und Testbed erstellt werden. Sie sind statistische Signifikanztests, die entweder eine Z-Score oder Student’s T-Test verwenden, um Leistungseinbrüche zu detektieren und Alarme zu erzeugen. Wenn eine Metrik unterhalb der unteren Grenze eines Schwellenwerts oder oberhalb der oberen Grenze eines Schwellenwerts liegt, wird ein Alarm für diese Metrik erzeugt.

Schwellenwerte funktionieren am besten, wenn:

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

Wenn es weniger als 30 historische Metriken für die Kombination von Metrikart, Branch und Testbed gibt, dann sollte ein Student’s T-Test-Schwellenwert verwendet werden und nicht ein Z-Score-Schwellenwert.

The Normal Distribution https://commons.wikimedia.org/wiki/File:The_Normal_Distribution.svg
🐰 Keine Panik! Das wird in einer Minute alles Sinn machen.

##Test auf statistische Signifikanz

Z-Score

Der Z-Score misst die Anzahl der Standardabweichungen (σ), die eine gegebene Metrik über oder unter dem Durchschnitt der historischen Metriken liegt. Die Standardabweichung (σ) kann auch als untere Grenze oder obere Grenze kumulative Prozentzahl ausgedrückt werden.

Zum Beispiel sind zwei Standardabweichungen (2σ) das Gleiche wie eine obere Grenze kumulative Prozentzahl von 97,7%, wie oben dargestellt. Bei der Erstellung von Z-Score-Schwellenwerten wird die Dezimalschreibweise der kumulativen Prozentzahl verwendet. In diesem Beispiel wäre die obere Grenze kumulative Prozentzahl von 97,7% eine obere Grenze von 0,977. In der Praxis wäre ein solcher Schwellenwert nützlich für die Metrikart Latenz. Das heißt, ein größerer Wert würde auf eine Performance-Verschlechterung hinweisen.

Wenn ein kleinerer Wert auf eine Leistungsverschlechterung hinweisen würde, wie bei der Metrikart Durchsatz, sollte eine untere Grenze kumulative Prozentzahl verwendet werden. Eine untere Grenze kumulative Prozentzahl von 97,7% würde zwei Standardabweichungen unter dem Durchschnitt (-2σ) entsprechen. Dies würde in Dezimalschreibweise als Unterer Grenzwert von 0,977 angegeben.


🐰 Tipp: Wenn Sie einen Z-Score-Schwellenwert verwenden, stellen Sie die Mindeststichprobengröße auf mindestens 30 ein.

Student’s T-Test

Der Student’s T-Test misst, wie wahrscheinlich es ist, dass eine gegebene Metrik über oder unter dem Durchschnitt der historischen Metrik liegt. Diese Wahrscheinlichkeit wird als Konfidenzintervall (CI) bezeichnet. Das Konfidenzintervall (CI) wird als untere Grenze oder obere Grenze Konfidenzprozentzahl ausgedrückt.

Zum Beispiel zeigt ein oberer Grenzwert Konfidenzprozentsatz von 95,0% an, dass 95,0% der Metriken kleiner als ein erwartetes Maximum sein sollten. Bei der Erstellung von T-Test-Schwellenwerten wird die Dezimalschreibweise der Konfidenzprozentzahl verwendet. In diesem Beispiel würde die obere Grenze Konfidenzprozentzahl von 95,0% eine obere Grenze von 0,95 bedeuten. In der Praxis wäre ein solcher Schwellenwert nützlich für die Metrikart Latenz. Das heißt, ein größerer Wert würde auf eine Performance-Verschlechterung hinweisen.

Wenn ein kleinerer Wert auf eine Leistungsverschlechterung hinweisen würde, wie bei der Metrikart Durchsatz, sollte eine untere Grenze Konfidenzprozentzahl verwendet werden. Eine untere Grenze Konfidenzprozentzahl von 95,0% würde darauf hinweisen, dass die Metriken größer als ein erwartetes Minimum sein sollten. Dies würde in Dezimalschreibweise als Unterer Grenzwert von 0,95 angegeben.


🐰 Tipp: Verwenden Sie einen T-Test-Schwellenwert, wenn Sie weniger als 30 historische Metriken haben.

Statistische Signifikanzgrenze

Die Bedeutung der statistischen Signifikanzgrenze hängt vom statistischen Signifikanztest ab:

  • Z-Score: Standardabweichung (σ) ausgedrückt als kumulative Dezimalprozentzahl
  • T-Test: Konfidenzintervall (CI) ausgedrückt als Dezimal-Konfidenzprozentzahl

Jede Metrik wird, wenn sie existiert, gegen die statistische Signifikanzgrenze des Schwellenwerts geprüft. Dies kann eine Untere Grenze, eine Obere Grenze oder beides beinhalten. Eine Grenzlimit wird für jede Grenze berechnet. Dieses Grenzlimit wird dann mit der aktuellen Metrik verglichen. Wenn diese Metrik außerhalb des Grenzlimits liegt, wird ein Alarm erzeugt.

🐰 Tipp: Um einen CI-Build zu verfehlen, wenn eine Grenze verletzt wird, verwenden Sie die --err Flagge für den bencher run CLI-Unterbefehl.

Unterschiedliches Verhalten

Eine untere Grenze kann für einen Schwellenwert gesetzt werden. Es wird verwendet, wenn ein kleinerer Wert auf eine Leistungsverschlechterung hinweisen würde, wie bei der Metrikart Durchsatz. Der Wert muss eine Dezimalzahl zwischen 0.5 und 1.0 sein.

Zum Beispiel, wenn Sie einen Z-Score verwendeten und Ihre historischen Metriken einen Durchschnitt von 100 und eine Standardabweichung von 10 hatten, dann würde eine untere Grenze von 0,977 eine untere Grenze bei 80,05 erzeugen. Ein Wert von weniger als 80,05 würde einen Alarm erzeugen.

Obergrenze

Eine obere Grenze kann für einen Schwellenwert gesetzt werden. Es wird verwendet, wenn ein größerer Wert auf eine Leistungsverschlechterung hinweisen würde, wie bei der Metrikart Latenz. Der Wert muss eine Dezimalzahl zwischen 0.5 und 1.0 sein.

Zum Beispiel, wenn Sie einen Z-Score verwendeten und Ihre historischen Metriken einen Durchschnitt von 100 und eine Standardabweichung von 10 hatten, dann würde eine obere Grenze von 0,977 eine obere Grenze bei 119,95 erzeugen. Ein Wert über 119,95 würde einen Alarm erzeugen.

Stichprobengröße

Mindeststichprobengröße

Für einen Schwellenwert kann eine Mindeststichprobengröße gesetzt werden. Der Schwellenwert führt seinen Test auf statistische Signifikanz nur durch, wenn die Anzahl der historischen Metriken größer oder gleich der Mindeststichprobengröße ist.

Maximale Stichprobengröße

Für einen Schwellenwert kann eine maximale Stichprobengröße gesetzt werden. Für seinen Test auf statistische Signifikanz beschränkt sich der Schwellenwert auf nur die neuesten historischen Metriken, begrenzt auf die maximale Stichprobengröße.

Fenstergröße

Für einen Schwellenwert kann eine Fenstergröße in Sekunden gesetzt werden. Für seinen Test auf statistische Signifikanz beschränkt sich der Schwellenwert auf nur die neuesten historischen Metriken, begrenzt durch das gegebene Zeitfenster.

Alarme

Alarme werden erzeugt, wenn eine Metrik unterhalb der unteren Grenze eines Schwellenwerts oder oberhalb der oberen Grenze eines Schwellenwerts liegt. Um einen CI-Build im Falle eines Alarms zu verfehlen, setzen Sie die --err Flagge beim Verwenden des bencher run CLI-Unterbefehls.

Unterdrückung von Alarmen

Manchmal kann es nützlich sein, Alarme für einen bestimmten Benchmark zu unterdrücken. Der beste Weg, dies zu tun, ist durch das Hinzufügen einer dieser speziellen Suffixe zum Namen dieses Benchmarks:

  • _bencher_ignore
  • BencherIgnore
  • -bencher-ignore

Zum Beispiel, wenn Ihr Benchmark my_flaky_benchmark hieß, dann würde das Umbenennen in my_flaky_benchmark_bencher_ignore diesen bestimmten Benchmark von nun an ignorieren. Ignorierte Benchmarks werden nicht gegen den Schwellenwert geprüft, selbst wenn einer existiert. Allerdings werden die Metriken für ignorierte Benchmarks immer noch gespeichert. Unter Beibehaltung unseres Beispiels würden die Ergebnisse von my_flaky_benchmark_bencher_ignore immer noch in der Datenbank unter my_flaky_benchmark gespeichert. Entfernen Sie das Suffix und kehren Sie zum ursprünglichen Benchmark-Namen zurück, so wird dort fortgesetzt, wo Sie aufgehört haben.



🐰 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.