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 igualmente 100 e qualquer valor menor que 100 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 igualmente 100 e qualquer valor maior que 100 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 para 10%). É 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 de 100 o Limite Inferior seria 90 e qualquer valor menor que 90 geraria um Alerta.
  • 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 para 10%). É 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 de 100 o Limite Superior seria 110 e qualquer valor maior que 110 geraria um Alerta.
The Normal Distribution https://commons.wikimedia.org/wiki/File:The_Normal_Distribution.svg

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 e 1.0. Onde 0.5 representa a média e 1.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 de 100 e um desvio padrão de 10, o Limite Inferior seria 80.05 e qualquer valor menor que 80.05 geraria um Alerta.
  • Limite Superior do z-score

    • Um Limite Superior do z-score pode ser qualquer decimal positivo entre 0.5 e 1.0. Onde 0.5 representa a média e 1.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 de 100 e um desvio padrão de 10, o Limite Superior seria 119.95 e qualquer valor maior que 119.95 geraria um Alerta.

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 e 1.0. Onde 0.5 representa a média e 1.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ê tinha 25 Métricas históricas com uma média de 100 e um desvio padrão de 10, o Limite do Limite Inferior seria 78.96 e qualquer valor menor que 78.96 geraria um Alerta.
  • Limite Superior do limiar do teste-t

    • Um Limite Superior do limiar do teste-t pode ser qualquer decimal positivo entre 0.5 e 1.0. Onde 0.5 representa a média e 1.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ê tinha 25 Métricas históricas com uma média de 100 e um desvio padrão de 10, o Limite do Limite Superior seria 121.04 e qualquer valor maior que 121.04 geraria um Alerta.
The Log Normal Distribution https://mathworld.wolfram.com/images/eps-svg/LogNormalDistribution_800.svg

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 e 1.0. Onde 0.5 representa a localização central e 1.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ê tivesse 25 Métricas históricas centradas em torno de 100 e um outlier anterior em 200, o Limite do Limite Inferior seria 71.20 e qualquer valor inferior a 71.20 geraria um Alerta.
  • Limite Superior do Limiar Log Normal

    • Um Limite Superior do Limiar Log Normal pode ser qualquer decimal positivo entre 0.5 e 1.0. Onde 0.5 representa a localização central e 1.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ê tivesse 25 Métricas históricas centradas em torno de 100 e um outlier anterior em 200, o Limite do Limite Superior seria 134.18 e qualquer valor superior a 134.18 geraria um Alerta.
Interquartile Range https://access.openupresources.org/curricula/our6-8math/embeds/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBbTRmIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--941ca9b24415706ee262cc85b237c99ba4ca015b/6.8.19.Images.student.summary.03_en.svg

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 para 2x). 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 de 100 e um intervalo interquartil de 10 o Limite Inferior seria 80 e qualquer valor menor que 80 geraria um Alerta.
  • Limite Superior do Intervalo Interquartil

    • Um Limite Superior do Intervalo Interquartil pode ser qualquer multiplicador maior ou igual a zero (ex: use 2.0 para 2x). 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 de 100 e um intervalo interquartil de 10 o Limite Superior seria 120 e qualquer valor maior que 120 geraria um Alerta.

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 para 2x). É 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 de 100, um intervalo interquartil de 10 e uma média delta do intervalo interquartil de 0.2 (20%), o Limite Inferior seria 60 e qualquer valor menor que 60 geraria um Alerta.
  • 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 para 2x). É 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 de 100, um intervalo interquartil de 10 e uma média delta do intervalo interquartil de 0.2 (20%), o Limite Superior seria 140 e qualquer valor maior que 140 geraria um Alerta.


🐰 Parabéns! Você aprendeu tudo sobre Limites & Alertas! 🎉


Continue: Benchmarking Contínuo ➡

🤖 Este documento foi gerado automaticamente pelo OpenAI GPT-4. Pode não ser preciso e pode conter erros. Se você encontrar algum erro, abra um problema no GitHub.