Limites & Alertas
Os limites são como você detecta regressões de desempenho no Bencher. Um Limite é atribuído a uma combinação única de: Ramo, Bancada de Testes e Medida. Um Limite deve ter um Limite Inferior, Limite Superior, ou ambos. Cada Limite é usado para calcular um Limite de Margem. Em seguida, cada nova Métrica é verificada contra cada Limite de Margem.
- Limite Inferior
- Um Limite Inferior é usado quando um valor menor indicaria uma regressão de desempenho, como com a Medida de Vazão.
- Limite Superior
- Um Limite Superior é usado quando um valor maior indicaria uma regressão de desempenho, como com a Medida de Latência.
Existem vários tipos de Limites:
Alertas
Alertas são gerados quando uma nova Métrica está abaixo do Limite Inferior de um Limiar ou acima do Limite Superior de um Limiar.
Para falhar uma construção CI no caso de um alerta, defina a flag --err
ao usar o subcomando CLI bencher run
.
Suprimindo Alertas
Às vezes, pode ser útil suprimir Alertas para um Benchmark específico. A melhor maneira de fazer isso é adicionando um desses sufixos especiais ao nome do Benchmark:
_bencher_ignore
BencherIgnore
-bencher-ignore
Por exemplo, se o seu Benchmark era chamado my_flaky_benchmark
, então renomeá-lo para my_flaky_benchmark_bencher_ignore
ignoraria apenas esse Benchmark em particular daí em diante.
Benchmarks ignorados não são verificados contra o Limiar, mesmo que um exista.
No entanto, as métricas para os Benchmarks ignorados ainda são armazenadas.
Continuando com nosso exemplo, os resultados de my_flaky_benchmark_bencher_ignore
ainda seriam armazenados no banco de dados sob my_flaky_benchmark
.
Se você remover o sufixo e voltar ao nome original do Benchmark,
então as coisas voltarão de onde você parou.
Limiares Estáticos
Um Limiar Estático é o limiar mais simples. Se uma nova Métrica estiver abaixo de um Limite Inferior definido ou acima de um Limite Superior definido, um Alerta é gerado. Ou seja, o Limite Inferior/Superior é um Limite Inferior/Superior explícito. Deve ser definido um Limite Inferior, um Limite Superior, ou ambos. Os Limiares Estáticos funcionam melhor quando o valor da Métrica deve permanecer dentro de uma faixa constante, como contagens de instruções.
-
Limite Inferior do Limiar Estático
- Um Limite Inferior de Limiar Estático pode ser qualquer número de ponto flutuante. Ele é usado quando um valor menor indicaria uma regressão de desempenho. O Limite Inferior deve ser menor ou igual ao Limite Superior, se ambos forem especificados.
- Por exemplo, se você tivesse um Limiar Estático com um Limite Inferior definido para
100
, o Limite Inferior seria igualmente100
e qualquer valor menor que100
geraria um Alerta.
-
Limite Superior do Limiar Estático
- Um Limite Superior de Limiar Estático pode ser qualquer número de ponto flutuante. Ele é usado quando um valor maior indicaria uma regressão de desempenho. O Limite Superior deve ser maior ou igual ao Limite Inferior, se ambos forem especificados.
- Por exemplo, se você tivesse um Limiar Estático com um Limite Superior definido para
100
, o Limite Superior seria igualmente100
e qualquer valor maior que100
geraria um Alerta.
Limites Estatísticos
Todos os outros limites são Limites Estatísticos. Cada Limite Estatístico usa Métricas históricas e um teste estatístico de significância único para determinar se um Alerta é gerado. Portanto, o Limite Inferior/Superior significará coisas diferentes para diferentes Limites Estatísticos. Além de definir um Limite Inferior e/ou um Limite Superior, existem controles para quais Métricas históricas são usadas (ou seja, amostradas).
-
Tamanho mínimo da amostra
- Um Tamanho mínimo de amostra pode ser definido para um Limite Estatístico. O Limite Estatístico só executará seu teste de significância estatística se o número de Métricas históricas for maior ou igual ao Tamanho mínimo da amostra. O Tamanho mínimo da amostra deve ser menor ou igual ao Tamanho máximo da amostra, se ambos forem especificados.
-
Tamanho máximo da amostra
- Um Tamanho máximo de amostra pode ser definido para um Limite Estatístico. O Limite Estatístico se limitará apenas às Métricas históricas mais recentes, limitado ao Tamanho máximo da amostra para seu teste de significância estatística. O Tamanho máximo da amostra deve ser maior ou igual ao Tamanho mínimo da amostra, se ambos forem especificados.
-
Tamanho da Janela
- Um Tamanho de Janela em segundos pode ser definido para um Limite Estatístico. O Limite Estatístico se limitará apenas às Métricas históricas mais recentes, delimitadas pela janela de tempo dada para seu teste de significância estatística.
Limiares Percentuais
Um Limiar Percentual é o mais simples Limiar Estatístico. Se uma nova Métrica estiver abaixo de uma certa percentagem da média (Limite Inferior) ou acima de uma certa percentagem da média (Limite Superior) de suas Métricas históricas, um Alerta é gerado. Um Limite Inferior, um Limite Superior, ou ambos devem ser configurados. Os Limiares Percentuais funcionam melhor quando o valor da Métrica deve permanecer dentro de uma faixa conhecida como boa.
-
Limiar Percentual Limite Inferior
- Um Limiar Percentual Limite Inferior pode ser qualquer percentagem maior ou igual a zero na forma decimal (ex: use
0,10
para10%
). É usado quando um valor menor indicaria uma regressão de performance. - Por exemplo, se você tivesse um Limiar Percentual com um Limite Inferior definido para
0,10
e suas Métricas históricas tivessem uma média de100
o Limite Inferior seria90
e qualquer valor menor que90
geraria um Alerta.
- Um Limiar Percentual Limite Inferior pode ser qualquer percentagem maior ou igual a zero na forma decimal (ex: use
-
Limiar Percentual Limite Superior
- Um Limiar Percentual Limite Superior pode ser qualquer percentagem maior ou igual a zero na forma decimal (ex: use
0,10
para10%
). É usado quando um valor maior indicaria uma regressão de performance. - Por exemplo, se você tivesse um Limiar Percentual com um Limite Superior definido para
0,10
e suas Métricas históricas tivessem uma média de100
o Limite Superior seria110
e qualquer valor maior que110
geraria um Alerta.
- Um Limiar Percentual Limite Superior pode ser qualquer percentagem maior ou igual a zero na forma decimal (ex: use
Limites do z-score
Um Limite do z-score mede o número de desvios padrão (σ) que uma nova Métrica está da média de suas Métricas históricas usando um z-score.
Os Limites do z-score funcionam melhor quando:
- Não há diferenças extremas entre as execuções de benchmark
- As execuções de benchmark são totalmente independentes uma da outra
- O número de iterações para uma única execução de benchmark é menor que 10% das Métricas históricas
- Existem pelo menos 30 Métricas históricas (tamanho mínimo da Amostra >= 30)
Para os Limites do z-score, os desvios padrão são expressos como uma percentagem cumulativa decimal. Se uma nova Métrica estiver abaixo de uma certa percentagem cumulativa do lado esquerdo (Limite Inferior) ou acima de uma certa percentagem cumulativa do lado direito (Limite Superior) para suas Métricas históricas, um Alerta é gerado. Deve ser estabelecido um Limite Inferior, um Limite Superior, ou ambos.
-
Limite Inferior do z-score
- Um Limite Inferior do z-score pode ser qualquer decimal positivo entre
0.5
e1.0
. Onde0.5
representa a média e1.0
representa todos os possíveis valores do lado esquerdo (-∞). É usado quando um valor menor indicaria uma regressão de desempenho. - Por exemplo, se você usasse um Limite do z-score com um Limite Inferior de
0.977
e suas Métricas históricas tivessem uma média de100
e um desvio padrão de10
, o Limite Inferior seria80.05
e qualquer valor menor que80.05
geraria um Alerta.
- Um Limite Inferior do z-score pode ser qualquer decimal positivo entre
-
Limite Superior do z-score
- Um Limite Superior do z-score pode ser qualquer decimal positivo entre
0.5
e1.0
. Onde0.5
representa a média e1.0
representa todos os possíveis valores do lado direito (∞). É usado quando um valor maior indicaria uma regressão de desempenho. - Por exemplo, se você usasse um Limite do z-score com um Limite Superior de
0.977
e suas Métricas históricas tivessem uma média de100
e um desvio padrão de10
, o Limite Superior seria119.95
e qualquer valor maior que119.95
geraria um Alerta.
- Um Limite Superior do z-score pode ser qualquer decimal positivo entre
Limiares do teste-t
Um limiar do teste-t mede o intervalo de confiança (IC) para quão provável é que uma nova Métrica esteja acima ou abaixo da média de suas Métricas históricas usando um teste-t de Student.
Os limiares do teste-t funcionam melhor quando:
- Não há diferenças extremas entre as execuções do benchmark
- As execuções do benchmark são totalmente independentes uma da outra
- O número de iterações para uma única execução do benchmark é inferior a 10% das Métricas históricas
Para os limiares do teste-t, os intervalos de confiança são expressos como uma porcentagem de confiança decimal. Se uma nova Métrica estiver abaixo de uma certa porcentagem de confiança do lado esquerdo (Limite Inferior) ou acima de uma certa porcentagem de confiança do lado direito (Limite Superior) para suas Métricas históricas, um Alerta é gerado. Um Limite Inferior, Limite Superior, ou ambos devem ser definidos.
-
Limite Inferior do limiar do teste-t
- Um Limite Inferior do limiar do teste-t pode ser qualquer decimal positivo entre
0.5
e1.0
. Onde0.5
representa a média e1.0
representa todos os possíveis valores do lado esquerdo (-∞). Ele é usado quando um valor menor indicaria uma regressão de performance. - Por exemplo, se você usou um limiar do teste-t com um Limite Inferior de
0.977
e você tinha25
Métricas históricas com uma média de100
e um desvio padrão de10
, o Limite do Limite Inferior seria78.96
e qualquer valor menor que78.96
geraria um Alerta.
- Um Limite Inferior do limiar do teste-t pode ser qualquer decimal positivo entre
-
Limite Superior do limiar do teste-t
- Um Limite Superior do limiar do teste-t pode ser qualquer decimal positivo entre
0.5
e1.0
. Onde0.5
representa a média e1.0
representa todos os possíveis valores do lado direito (∞). Ele é usado quando um valor maior indicaria uma regressão de performance. - Por exemplo, se você usou um limiar do teste-t com um Limite Superior de
0.977
e você tinha25
Métricas históricas com uma média de100
e um desvio padrão de10
, o Limite do Limite Superior seria121.04
e qualquer valor maior que121.04
geraria um Alerta.
- Um Limite Superior do limiar do teste-t pode ser qualquer decimal positivo entre
Limiares Log Normais
Um Limiar Log Normal mede a probabilidade de que uma nova Métrica esteja acima ou abaixo da localização central de suas Métricas históricas usando uma Distribuição Log Normal.
Os Limiares Log Normais funcionam melhor quando:
- As execuções de benchmark são totalmente independentes uma da outra
- O número de iterações para uma única execução de benchmark é inferior a 10% das Métricas históricas
- Todos os dados são positivos (o log natural de um número negativo é
indefinido
)
Para os Limiares Log Normais, a probabilidade é expressa como uma porcentagem decimal. Se uma nova Métrica estiver abaixo de uma certa porcentagem do lado esquerdo (Limite Inferior) ou acima de uma certa porcentagem do lado direito (Limite Superior) para suas Métricas históricas, um Alerta é gerado. Deve ser estabelecido um Limite Inferior, um Limite Superior, ou ambos.
-
Limite Inferior do Limiar Log Normal
- Um Limite Inferior do Limiar Log Normal pode ser qualquer decimal positivo entre
0.5
e1.0
. Onde0.5
representa a localização central e1.0
representa todos os possíveis valores do lado esquerdo (-∞). É usado quando um valor menor indicaria uma regressão de desempenho. - Por exemplo, se você usou um Limiar Log Normal com um Limite Inferior de
0.977
e você tivesse25
Métricas históricas centradas em torno de100
e um outlier anterior em200
, o Limite do Limite Inferior seria71.20
e qualquer valor inferior a71.20
geraria um Alerta.
- Um Limite Inferior do Limiar Log Normal pode ser qualquer decimal positivo entre
-
Limite Superior do Limiar Log Normal
- Um Limite Superior do Limiar Log Normal pode ser qualquer decimal positivo entre
0.5
e1.0
. Onde0.5
representa a localização central e1.0
representa todos os possíveis valores do lado direito (∞). É usado quando um valor maior indicaria uma regressão de desempenho. - Por exemplo, se você usou um Limiar Log Normal com um Limite Superior de
0.977
e você tivesse25
Métricas históricas centradas em torno de100
e um outlier anterior em200
, o Limite do Limite Superior seria134.18
e qualquer valor superior a134.18
geraria um Alerta.
- Um Limite Superior do Limiar Log Normal pode ser qualquer decimal positivo entre
Limites do Intervalo Interquartil
Um Limite do Intervalo Interquartil mede quantas múltiplos do intervalo interquartil (IQR) uma nova Métrica está acima ou abaixo da mediana das suas Métricas históricas. Se uma nova Métrica estiver abaixo de um certo múltiplo do IQR da mediana (Limite Inferior) ou acima um certo múltiplo do IQR da mediana (Limite Superior) das suas Métricas históricas, um Alerta é gerado. Um Limite Inferior, Limite Superior, ou ambos devem ser definidos.
-
Limite Inferior do Intervalo Interquartil
- Um Limite Inferior do Intervalo Interquartil pode ser qualquer multiplicador maior ou igual a zero (ex: use
2.0
para2x
). Ele é usado quando um valor menor indicaria uma regressão de desempenho. - Por exemplo, se você tivesse um Limite do Intervalo Interquartil com um Limite Inferior definido como
2.0
e suas Métricas históricas tivessem uma mediana de100
e um intervalo interquartil de10
o Limite Inferior seria80
e qualquer valor menor que80
geraria um Alerta.
- Um Limite Inferior do Intervalo Interquartil pode ser qualquer multiplicador maior ou igual a zero (ex: use
-
Limite Superior do Intervalo Interquartil
- Um Limite Superior do Intervalo Interquartil pode ser qualquer multiplicador maior ou igual a zero (ex: use
2.0
para2x
). Ele é usado quando um valor maior indicaria uma regressão de desempenho. - Por exemplo, se você tivesse um Limite do Intervalo Interquartil com um Limite Superior definido como
2.0
e suas Métricas históricas tivessem uma mediana de100
e um intervalo interquartil de10
o Limite Superior seria120
e qualquer valor maior que120
geraria um Alerta.
- Um Limite Superior do Intervalo Interquartil pode ser qualquer multiplicador maior ou igual a zero (ex: use
Limiares do Intervalo Interquartil Delta
Um Limiar do Intervalo Interquartil Delta mede quantos múltiplos da média percentual de mudança (Δ) do intervalo interquartil (IIQ) uma nova Métrica está acima ou abaixo da mediana de suas Métricas históricas. Se uma nova Métrica estiver abaixo de um certo múltiplo do ΔIIQ da mediana (Limite Inferior), ou acima de um certo múltiplo do ΔIIQ da mediana (Limite Superior) de suas Métricas históricas, um Alerta é gerado. Deve ser definido um Limite Inferior, Superior, ou ambos.
-
Limite Inferior do Limiar do Intervalo Interquartil Delta
- Um Limite Inferior do Limiar do Intervalo Interquartil Delta pode ser qualquer multiplicador maior ou igual a zero (ex: use
2.0
para2x
). É usado quando um valor menor indicaria uma regressão de desempenho. - Por exemplo, se você tivesse um Limiar do Intervalo Interquartil Delta com um Limite Inferior definido como
2.0
e suas Métricas históricas tivessem uma mediana de100
, um intervalo interquartil de10
e uma média delta do intervalo interquartil de0.2
(20%
), o Limite Inferior seria60
e qualquer valor menor que60
geraria um Alerta.
- Um Limite Inferior do Limiar do Intervalo Interquartil Delta pode ser qualquer multiplicador maior ou igual a zero (ex: use
-
Limite Superior do Limiar do Intervalo Interquartil Delta
- Um Limite Superior do Limiar do Intervalo Interquartil Delta pode ser qualquer multiplicador maior ou igual a zero (ex: use
2.0
para2x
). É usado quando um valor maior indicaria uma regressão de desempenho. - Por exemplo, se você tivesse um Limiar do Intervalo Interquartil Delta com um Limite Superior definido como
2.0
e suas Métricas históricas tivessem uma mediana de100
, um intervalo interquartil de10
e uma média delta do intervalo interquartil de0.2
(20%
), o Limite Superior seria140
e qualquer valor maior que140
geraria um Alerta.
- Um Limite Superior do Limiar do Intervalo Interquartil Delta pode ser qualquer multiplicador maior ou igual a zero (ex: use
🐰 Parabéns! Você aprendeu tudo sobre Limites & Alertas! 🎉