임계값 & 알림


메트릭 유형, 브랜치, 테스트베드의 고유한 조합에 대한 임계값을 생성할 수 있습니다. 이것들은 성능 회귀분석을 감지하고 경고를 생성하기 위해 Z-점수 또는 스튜던트의 t-검정 을 사용하는 통계적 유의성 검정입니다. 메트릭이 임계값의 하나도 범위 또는 상단 경계한계보다 낮거나 높으면, 해당 메트릭에 대한 경고가 생성됩니다.

임계값은 다음과 같은 경우에 가장 잘 작동합니다:

  • 벤치마크 실행 간에 극단적인 차이가 없는 경우
  • 벤치마크 실행이 서로 완전히 독립적인 경우
  • 단일 벤치마크 실행에 대한 반복 횟수가 과거 메트릭의 10% 미만인 경우

메트릭 유형, 브랜치 및 테스트 베드의 조합에 대한 과거 메트릭이 30개 미만인 경우 스튜던트의 t-검정 임계값을 사용해야 하며 Z-점수 임계값을 사용하지 말아야 합니다.

The Normal Distribution https://commons.wikimedia.org/wiki/File:The_Normal_Distribution.svg
🐰 걱정마세요! 이해가 안 간다면 조금 후에 이해가 될 겁니다.

통계적 유의성 검정

Z-점수

Z-점수는 주어진 메트릭이 과거 메트릭의 평균에서 어떤 표준편차(σ) 위 또는 아래인지 측정합니다. 표준편차(σ)는 하단 경계 또는 상단 경계 누적 백분율로도 표현될 수 있습니다.

예를 들어, 표준 편차 2σ는 위에 표시된 것처럼 상단 경계 누적 백분율 97.7%와 동일합니다. Z-점수 임계값을 생성할 때 누적 백분율의 소수 표기법이 사용됩니다. 이 예에서, 상단 경계 누적 백분율 97.7%는 0.977의 상단 경계가 될 것입니다. 실제로 이런 식의 임계값은 지연 메트릭 유형에 유용할 것입니다. 즉, 더 큰 값이 성능 저하를 나타냅니다.

적은 값이 성능 회귀를 나타내는 경우 스루풋 메트릭 유형과 같이 하단 경계 누적 백분율을 사용해야 합니다. 하단 경계 누적 백분율 97.7%는 평균 아래 두 표준 편차(-2σ)에 해당합니다. 이것은 0.977의 하단 경계로 소수 표기법을 통해 제공될 것입니다.


🐰 팁: Z-점수 임계값을 사용할 때 최소 샘플 크기를 적어도 30으로 설정하세요.

스튜던트의 t-검정

스튜던트의 t-검정은 주어진 메트릭이 과거 메트릭의 평균 이상이나 이하일 가능성을 측정합니다. 이 가능성은 신뢰 구간 (CI)라고 합니다. 신뢰 구간 (CI)는 하단 경계 또는 상단 경계 신뢰 백분율로 표현됩니다.

예를 들어, 상단 경계 신뢰 백분율 95.0%는 95.0%의 메트릭이 예상 _최대치_보다 작아야 함을 나타냅니다. t-검정 임계값을 생성할 때 신뢰 백분율의 소수 표기법이 사용됩니다. 이 예에서, 상단 경계 신뢰 백분율 95.0%는 0.95의 상단 경계가 될 것입니다. 실제로 이런 식의 임계값은 지연 메트릭 유형에 유용할 것입니다. 즉, 더 큰 값이 성능 저하를 나타냅니다.

적은 값이 성능 회귀를 나타내는 경우 스루풋 메트릭 유형과 같이 하단 경계 신뢰 백분율을 사용해야 합니다. 하단 경계 신뢰 백분율 95.0%는 메트릭이 예상 _최소치_보다 _크다_는 것을 나타냅니다. 이것은 0.95의 하단 경계로 소수 표기법을 통해 주어질 것입니다.


🐰 팁: 과거 메트릭이 30개 미만인 경우 t-검정 임계값을 사용하세요.

통계적 유의성 경계

통계적 유의성 경계의 의미는 통계적 유의성 검정에 따라 다릅니다:

  • Z-점수: 표준편차(σ)가 소수 누적 백분율로 표현됨
  • t-검정: 신뢰 구간(CI)이 소수 신뢰 백분율로 표현됨

임계값의 통계적 유의성 경계에 각 메트릭들이 체크됩니다. 이는 하단 경계, 상단 경계 또는 둘 다에 해당할 수 있습니다. 각 경계에 대해 경계 한도가 계산됩니다. 그런 다음 이 경계 한계가 현재 메트릭과 비교됩니다. 만약 메트릭이 경계 한도를 벗어나면 경고가 발생합니다.

🐰 팁: 경계를 어길 때 CI 빌드를 실패시키려면 bencher run CLI subcommand에 --err 플래그를 사용하세요.

하단 경계

임계값에 대한 하단 경계를 설정할 수 있습니다. 이것은 스루풋 메트릭 유형과 같이 더 작은 값이 성능 저하를 나타내는 경우에 사용됩니다. 값은 0.51.0사이의 소수여야 합니다.

예를 들어, Z-점수를 사용했고 가지고 있는 과거 메트릭 평균이 100이고 표준편차가 10이라면, 0.977의 하단 경계는 80.05에서 하단 경계 한도를 생성할 것입니다. 80.05보다 작은 값은 알림을 생성할 것입니다.

상단 경계

임계값에 대한 상단 경계를 설정할 수 있습니다. 이것은 지연 메트릭 유형과 같이 더 큰 값이 성능 저하를 나타내는 경우에 사용됩니다. 값은 0.51.0사이의 소수여야 합니다.

예를 들어, Z-점수를 사용했고 가지고 있는 과거 메트릭 평균이 100이고 표준편차가 10이라면, 0.977의 상단 경계는 119.95에서 상단 경계 한도를 생성할 것입니다. 119.95보다 큰 값은 알림을 생성할 것입니다.

샘플 크기

최소 샘플 크기

임계값에 대한 최소 샘플 크기를 설정할 수 있습니다. 임계값은 만약 과거 메트릭의 수가 최소 샘플 크기와 같거나 그것보다 크다면 통계 유의성 검정을 실행할 것입니다.

최대 샘플 크기

임계값에 대한 최대 샘플 크기를 설정할 수 있습니다. 임계값은 가장 최근의 과거 메트릭만 통계 유의성 검정을 위해 한도를 두어 자신을 제한할 것입니다. 이 한도는 최대 샘플 크기에서 제한됩니다.

윈도우 크기

임계값에 대한 윈도우 크기를 초 단위로 설정할 수 있습니다. 임계값은 가장 최근의 과거 메트릭만 통계 유의성 검정을 위해 주어진 시간 윈도우를 벗어나지 않도록 제한할 것입니다.

알림

메트릭이 임계값의 하단 경계 한도 아래 또는 상단 경계 한도 위일 때 알림이 생성됩니다. 알림이 있는 경우 CI 빌드가 실패하도록 설정하려면 bencher run CLI subcommand를 사용할 때 --err 플래그를 설정하세요.

알림 억제

특정 벤치마크에 대한 알림을 억제하는 것이 유용할 때가 있습니다. 이를 하는 가장 좋은 방법은 벤치마크 이름에 다음 특수 접미사 중 하나를 추가하는 것입니다:

  • _bencher_ignore
  • BencherIgnore
  • -bencher-ignore

예를 들어, 벤치마크 이름이 my_flaky_benchmark라면 이름을 my_flaky_benchmark_bencher_ignore로 바꾸면 그 특정 벤치마크만 무시하게 됩니다. 무시된 벤치마크는 임계값이 존재하더라도 임계값과 비교되지 않습니다. 그러나 무시된 벤치마크의 메트릭은 그래도 저장됩니다. 예를 계속하면, my_flaky_benchmark_bencher_ignore의 결과는 my_flaky_benchmark아래의 데이터베이스에 계속 저장됩니다. 접미사를 제거하고 원래의 벤치마크 이름으로 돌아가면 그대로 중단한 곳에서 계속 진행됩니다.



🐰 축하합니다! 이제 임계값 & 알림에 대해 모두 배웠습니다! 🎉


계속하려면: 연속 벤치마킹 ➡

🤖 이 문서는 OpenAI GPT-4에 의해 자동으로 생성되었습니다. 정확하지 않을 수도 있고 오류가 있을 수도 있습니다. 오류를 발견하면 GitHub에서 문제를 열어주세요.