Seuils & Alertes
Les seuils sont la manière dont vous détectez les régressions de performance dans Bencher. Un seuil est attribué à une combinaison unique de : Branche, Plateau de test, et Mesure. Un seuil doit avoir une limite inférieure, une limite supérieure, ou les deux. Chaque limite est utilisée pour calculer une limite de seuil. Ensuite, chaque nouvelle mesure est vérifiée par rapport à chaque limite de seuil.
- Limite inférieure
- Une limite inférieure est utilisée lorsqu’une valeur plus petite indiquerait une régression de performance, comme avec la mesure du débit.
- Limite supérieure
- Une limite supérieure est utilisée lorsqu’une valeur plus élevée indiquerait une régression de performance, comme avec la mesure de latence.
Il existe plusieurs types de seuils :
Alertes
Les alertes sont générées lorsqu’une nouvelle métrique est inférieure à une limite inférieure de seuil ou supérieure à une limite supérieure de seuil.
Pour échouer une construction CI en cas d’alerte, définissez le drapeau --err
lors de l’utilisation de la sous-commande CLI bencher run
.
Suppression des alertes
Il peut parfois être utile de supprimer les alertes pour un Benchmark particulier. La meilleure façon de faire cela est d’ajouter l’un de ces suffixes spéciaux au nom de ce Benchmark :
_bencher_ignore
BencherIgnore
-bencher-ignore
Par exemple, si votre Benchmark s’appelait my_flaky_benchmark
, alors le renommer en my_flaky_benchmark_bencher_ignore
ignorerait juste ce Benchmark particulier à l’avenir.
Les Benchmarks ignorés ne sont pas vérifiés contre le seuil, même si un seuil existe.
Cependant, les mesures des Benchmarks ignorés sont toujours stockées.
En continuant avec notre exemple, les résultats de my_flaky_benchmark_bencher_ignore
seraient toujours stockés dans la base de données sous my_flaky_benchmark
.
Si vous supprimez le suffixe et revenez au nom original du Benchmark,
alors les choses reprennent exactement là où vous les avez laissées.
Seuils Statiques
Un Seuil Statique est le seuil le plus simple. Si une nouvelle Métrique est en dessous d’une Limite Inférieure définie ou au-dessus d’une Limite Supérieure définie, une Alerte est générée. C’est-à-dire que la Limite Inférieure/Supérieure est une Limite Inférieure/Supérieure explicite. Soit une Limite Inférieure, une Limite Supérieure, ou les deux doivent être définies. Les Seuils Statiques fonctionnent le mieux lorsque la valeur de la Métrique doit rester à l’intérieur d’une plage constante, comme les compteurs d’instructions.
-
Limite Inférieure du Seuil Statique
- Une Limite Inférieure de Seuil Statique peut être n’importe quel nombre flottant. Elle est utilisée lorsqu’une valeur inférieure indiquerait une régression de performance. La Limite Inférieure doit être inférieure ou égale à la Limite Supérieure, si les deux sont spécifiées.
- Par exemple, si vous aviez un Seuil Statique avec une Limite Inférieure définie à
100
la Limite de la Limite Inférieure serait également de100
et toute valeur inférieure à100
générera une Alerte.
-
Limite Supérieure du Seuil Statique
- Une Limite Supérieure de Seuil Statique peut être n’importe quel nombre flottant. Elle est utilisée lorsqu’une valeur supérieure indiquerait une régression de performance. La Limite Supérieure doit être supérieure ou égale à la Limite Inférieure, si les deux sont spécifiées.
- Par exemple, si vous aviez un Seuil Statique avec une Limite Supérieure définie à
100
la Limite de la Limite Supérieure serait également de100
et toute valeur supérieure à100
générera une Alerte.
Seuils Statistiques
Tous les autres Seuils sont des Seuils Statistiques. Chaque Seuil Statistique utilise des Métriques historiques et un test de signification statistique unique pour déterminer si une Alerte est générée. Par conséquent, la Limite Inférieure/Supérieure signifiera des choses différentes pour différents Seuils Statistiques. En plus de définir une Limite Inférieure et/ou une Limite Supérieure, il existe des contrôles pour les Métriques historiques utilisées (c’est-à-dire échantillonnées).
-
Taille d’Échantillon Minimum
- Une Taille d’Échantillon Minimum peut être définie pour un Seuil Statistique. Le Seuil Statistique n’exécutera son test de signification statistique que si le nombre de Métriques historiques est supérieur ou égal à la Taille d’Échantillon Minimum. La Taille d’Échantillon Minimum doit être inférieure ou égale à la Taille d’Échantillon Maximum, si les deux sont spécifiés.
-
Taille d’Échantillon Maximum
- Une Taille d’Échantillon Maximum peut être définie pour un Seuil Statistique. Le Seuil Statistique se limitera uniquement aux Métriques historiques les plus récentes, plafonnées à la Taille d’Échantillon Maximum pour son test de signification statistique. La Taille d’Échantillon Maximum doit être supérieure ou égale à la Taille d’Échantillon Minimum, si les deux sont spécifiés.
-
Taille de la Fenêtre
- Une Taille de la Fenêtre en secondes peut être définie pour un Seuil Statistique. Le Seuil Statistique se limitera uniquement aux Métriques historiques les plus récentes, limitées par la fenêtre de temps donnée pour son test de signification statistique.
Seuils de Pourcentage
Un Seuil de Pourcentage est le plus simple des Seuils Statistiques. Si une nouvelle Mesure est inférieure à un certain pourcentage de la moyenne (Limite Inférieure) ou supérieure à un certain pourcentage de la moyenne (Limite Supérieure) de vos Mesures historiques, une Alerte est générée. Une Limite Inférieure, une Limite Supérieure, ou les deux doivent être définies. Les Seuils de Pourcentage fonctionnent mieux lorsque la valeur de la Mesure doit rester dans une plage connue comme bonne.
-
Limite Inférieure du Seuil de Pourcentage
- Une Limite Inférieure du Seuil de Pourcentage peut être n’importe quel pourcentage supérieur ou égal à zéro sous forme décimale (ex: utilisez
0.10
pour10%
). Elle est utilisée lorsqu’une valeur plus petite indiquerait une régression des performances. - Par exemple, si vous aviez un Seuil de Pourcentage avec une Limite Inférieure définie à
0.10
et que vos Mesures historiques avaient une moyenne de100
la Limite de la Limite Inférieure serait90
et toute valeur inférieure à90
générerait une Alerte.
- Une Limite Inférieure du Seuil de Pourcentage peut être n’importe quel pourcentage supérieur ou égal à zéro sous forme décimale (ex: utilisez
-
Limite Supérieure du Seuil de Pourcentage
- Une Limite Supérieure du Seuil de Pourcentage peut être n’importe quel pourcentage supérieur ou égal à zéro sous forme décimale (ex: utilisez
0.10
pour10%
). Elle est utilisée lorsqu’une valeur supérieure indiquerait une régression des performances. - Par exemple, si vous aviez un Seuil de Pourcentage avec une Limite Supérieure définie à
0.10
et que vos Mesures historiques avaient une moyenne de100
la Limite de la Limite Supérieure serait110
et toute valeur supérieure à110
générerait une Alerte.
- Une Limite Supérieure du Seuil de Pourcentage peut être n’importe quel pourcentage supérieur ou égal à zéro sous forme décimale (ex: utilisez
Seuils de z-score
Un seuil de z-score mesure le nombre d’écarts types (σ) qu’une nouvelle métrique est par rapport à la moyenne de vos métriques historiques en utilisant un z-score.
Les seuils de z-score fonctionnent le mieux lorsque :
- Il n’y a pas de différences extrêmes entre les exécutions de benchmark
- Les exécutions de benchmark sont totalement indépendantes les unes des autres
- Le nombre d’itérations pour une seule exécution de benchmark est inférieur à 10% des métriques historiques
- Il y a au moins 30 métriques historiques (Taille de l’échantillon minimale >= 30)
Pour les seuils de z-score, les écarts types sont exprimés en pourcentage cumulatif décimal. Si une nouvelle métrique est en dessous d’un certain pourcentage cumulatif du côté gauche (Limite inférieure) ou au-dessus d’un certain pourcentage cumulatif du côté droit (Limite supérieure) pour vos métriques historiques, une alerte est générée. Une limite inférieure, une limite supérieure, ou les deux doivent être définies.
-
Limite inférieure du seuil de z-score
- Une limite inférieure du seuil de z-score peut être un décimal positif entre
0.5
et1.0
. Où0.5
représente la moyenne et1.0
représente toutes les valeurs possibles du côté gauche (-∞). Elle est utilisée lorsqu’une valeur plus petite indiquerait une régression des performances. - Par exemple, si vous utilisiez un seuil de z-score avec une limite inférieure de
0.977
et que vos métriques historiques avaient une moyenne de100
et un écart type de10
, la limite de la limite inférieure serait80.05
et toute valeur inférieure à80.05
générerait une alerte.
- Une limite inférieure du seuil de z-score peut être un décimal positif entre
-
Limite supérieure du seuil de z-score
- Une limite supérieure du seuil de z-score peut être un décimal positif entre
0.5
et1.0
. Où0.5
représente la moyenne et1.0
représente toutes les valeurs possibles du côté droit (∞). Elle est utilisée lorsqu’une valeur plus grande indiquerait une régression des performances. - Par exemple, si vous utilisiez un seuil de z-score avec une limite supérieure de
0.977
et que vos métriques historiques avaient une moyenne de100
et un écart type de10
, la limite de la limite supérieure serait119.95
et toute valeur supérieure à119.95
générerait une alerte.
- Une limite supérieure du seuil de z-score peut être un décimal positif entre
Seuils de test t
Un seuil de test t mesure l’intervalle de confiance (IC) pour déterminer la probabilité qu’une nouvelle Métrique soit supérieure ou inférieure à la moyenne de vos Métriques historiques à l’aide d’un test t de Student.
Les seuils de test t fonctionnent mieux lorsque :
- Il n’y a pas de différences extrêmes entre les runs de benchmark
- Les runs de benchmark sont totalement indépendants les uns des autres
- Le nombre d’itérations pour un seul run de benchmark est inférieur à 10% des Métriques historiques
Pour les seuils de test t, les intervalles de confiance sont exprimés en pourcentage de confiance décimal. Si une nouvelle Métrique est inférieure à un certain pourcentage de confiance côté gauche (Limite Inférieure) ou supérieure à un certain pourcentage de confiance côté droit (Limite Supérieure) pour vos Métriques historiques, une Alerte est générée. Soit une Limite Inférieure, soit une Limite Supérieure, ou les deux, doivent être définies.
-
Limite Inférieure du seuil de test t
- Une Limite Inférieure de seuil de test t peut être n’importe quel décimal positif entre
0.5
et1.0
. Où0.5
représente la moyenne et1.0
représente toutes les valeurs possibles du côté gauche (-∞). Elle est utilisée lorsqu’une valeur plus petite indiquerait une régression de performance. - Par exemple, si vous utilisiez un seuil de test t avec une Limite Inférieure de
0.977
et que vous aviez25
Métriques historiques avec une moyenne de100
et un écart type de10
, la Limite de la Limite Inférieure serait de78.96
et toute valeur inférieure à78.96
générerait une Alerte.
- Une Limite Inférieure de seuil de test t peut être n’importe quel décimal positif entre
-
Limite Supérieure du seuil de test t
- Une Limite Supérieure de seuil de test t peut être n’importe quel décimal positif entre
0.5
et1.0
. Où0.5
représente la moyenne et1.0
représente toutes les valeurs possibles du côté droit (∞). Elle est utilisée lorsqu’une valeur plus grande indiquerait une régression de performance. - Par exemple, si vous utilisiez un seuil de test t avec une Limite Supérieure de
0.977
et que vous aviez25
Métriques historiques avec une moyenne de100
et un écart type de10
, la Limite de la Limite Supérieure serait de121.04
et toute valeur supérieure à121.04
générerait une Alerte.
- Une Limite Supérieure de seuil de test t peut être n’importe quel décimal positif entre
Seuils Log Normaux
Un seuil Log Normal mesure la probabilité qu’une nouvelle Métrique soit supérieure ou inférieure au point central de vos Métriques historiques en utilisant une Distribution Log Normale.
Les seuils Log Normaux fonctionnent au mieux quand :
- Les exécutions de référence sont totalement indépendantes les unes des autres
- Le nombre d’itérations pour une seule exécution de référence est inférieur à 10% des Métriques historiques
- Toutes les données sont positives (le logarithme naturel d’un nombre négatif est
indéfini
)
Pour les seuils Log Normaux, la probabilité est exprimée en pourcentage décimal. Si une nouvelle Métrique est inférieure à un certain pourcentage du côté gauche (Limite Inférieure) ou supérieure à un certain pourcentage du côté droit (Limite Supérieure) de vos Métriques historiques, une Alerte est générée. Une Limite Inférieure, une Limite Supérieure, ou les deux doivent être définies.
-
Limite inférieure du seuil Log Normal
- Une Limite inférieure du seuil Log Normal peut être n’importe quel décimal positif entre
0.5
et1.0
. Où0.5
représente le point central et1.0
représente toutes les valeurs possibles du côté gauche (-∞). Elle est utilisée lorsqu’une valeur plus petite indiquerait une régression de performance. - Par exemple, si vous utilisez un seuil Log Normal avec une Limite Inférieure de
0.977
et que vous avez25
Métriques historiques centrées autour de100
et un outlier précédent à200
, la Limite Inférieure serait de71.20
et toute valeur inférieure à71.20
générerait une Alerte.
- Une Limite inférieure du seuil Log Normal peut être n’importe quel décimal positif entre
-
Limite supérieure du seuil Log Normal
- Une Limite supérieure du seuil Log Normal peut être n’importe quel décimal positif entre
0.5
et1.0
. Où0.5
représente le point central et1.0
représente toutes les valeurs possibles du côté droit (∞). Elle est utilisée lorsqu’une valeur plus grande indiquerait une régression de performance. - Par exemple, si vous utilisez un seuil Log Normal avec une Limite Supérieure de
0.977
et que vous avez25
Métriques historiques centrées autour de100
et un outlier précédent à200
, la Limite Supérieure serait de134.18
et toute valeur supérieure à134.18
génèrerait une Alerte.
- Une Limite supérieure du seuil Log Normal peut être n’importe quel décimal positif entre
Seuils de l’Intervalle Interquartile
Un seuil de l’intervalle interquartile mesure combien de multiples de l’intervalle interquartile (IQR) une nouvelle métrique est au-dessus ou en dessous de la médiane de vos métriques historiques. Si une nouvelle métrique est en dessous d’un certain multiple de l’IQR par rapport à la médiane (limite inférieure) ou au-dessus d’un certain multiple de l’IQR par rapport à la médiane (limite supérieure) de vos métriques historiques, une alerte est générée. Une limite inférieure, une limite supérieure, ou les deux doivent être définies.
-
Limite Inférieure du Seuil de l’Intervalle Interquartile
- Une limite inférieure du seuil de l’intervalle interquartile peut être n’importe quel multiplicateur supérieur ou égal à zéro (ex: utilisez
2.0
pour2x
). Elle est utilisée lorsqu’une valeur plus petite indiquerait une régression des performances. - Par exemple, si vous aviez un seuil de l’intervalle interquartile avec une limite inférieure définie à
2.0
et que vos métriques historiques avaient une médiane de100
et un intervalle interquartile de10
, la limite inférieure serait de80
et toute valeur inférieure à80
générerait une alerte.
- Une limite inférieure du seuil de l’intervalle interquartile peut être n’importe quel multiplicateur supérieur ou égal à zéro (ex: utilisez
-
Limite Supérieure du Seuil de l’Intervalle Interquartile
- Une limite supérieure du seuil de l’intervalle interquartile peut être n’importe quel multiplicateur supérieur ou égal à zéro (ex: utilisez
2.0
pour2x
). Elle est utilisée lorsqu’une valeur plus grande indiquerait une régression des performances. - Par exemple, si vous aviez un seuil de l’intervalle interquartile avec une limite supérieure définie à
2.0
et que vos métriques historiques avaient une médiane de100
et un intervalle interquartile de10
, la limite supérieure serait de120
et toute valeur supérieure à120
générerait une alerte.
- Une limite supérieure du seuil de l’intervalle interquartile peut être n’importe quel multiplicateur supérieur ou égal à zéro (ex: utilisez
Seuils de l’Écart Interquartile Delta
Un seuil de l’écart interquartile Delta mesure combien de multiples du changement moyen en pourcentage (Δ) de l’écart interquartile (IQR) une nouvelle métrique est au-dessus ou en dessous de la médiane de vos métriques historiques. Si une nouvelle métrique est en dessous d’un certain multiple du ΔIQR de la médiane (Limite inférieure) ou au-dessus d’un certain multiple du ΔIQR de la médiane (Limite supérieure) de vos métriques historiques, une alerte est générée. Une limite inférieure, une limite supérieure, ou les deux doivent être définies.
-
Limite inférieure du seuil de l’écart interquartile Delta
- Une limite inférieure du seuil de l’écart interquartile Delta peut être n’importe quel multiplicateur supérieur ou égal à zéro (par exemple : utilisez
2.0
pour2x
). Elle est utilisée lorsqu’une valeur plus petite indiquerait une régression des performances. - Par exemple, si vous aviez un seuil de l’écart interquartile Delta avec une limite inférieure fixée à
2.0
et que vos métriques historiques avaient une médiane de100
, un écart interquartile de10
, et une moyenne de l’écart interquartile delta de0.2
(20%
) la limite inférieure serait de60
et toute valeur inférieure à60
générerait une alerte.
- Une limite inférieure du seuil de l’écart interquartile Delta peut être n’importe quel multiplicateur supérieur ou égal à zéro (par exemple : utilisez
-
Limite supérieure du seuil de l’écart interquartile Delta
- Une limite supérieure du seuil de l’écart interquartile Delta peut être n’importe quel multiplicateur supérieur ou égal à zéro (par exemple : utilisez
2.0
pour2x
). Elle est utilisée lorsqu’une valeur plus grande indiquerait une régression des performances. - Par exemple, si vous aviez un seuil de l’écart interquartile Delta avec une limite supérieure fixée à
2.0
et que vos métriques historiques avaient une médiane de100
, un écart interquartile de10
, et une moyenne de l’écart interquartile delta de0.2
(20%
) la limite supérieure serait de140
et toute valeur supérieure à140
générerait une alerte.
- Une limite supérieure du seuil de l’écart interquartile Delta peut être n’importe quel multiplicateur supérieur ou égal à zéro (par exemple : utilisez
🐰 Bravo! Vous avez tout appris sur les Seuils & Alertes! 🎉