임계값 & 알림
메트릭 유형, 브랜치, 테스트베드의 고유한 조합에 대한 임계값을 생성할 수 있습니다. 이것들은 성능 회귀분석을 감지하고 경고를 생성하기 위해 Z-점수 또는 스튜던트의 t-검정 을 사용하는 통계적 유의성 검정입니다. 메트릭이 임계값의 하나도 범위 또는 상단 경계한계보다 낮거나 높으면, 해당 메트릭에 대한 경고가 생성됩니다.
임계값은 다음과 같은 경우에 가장 잘 작동합니다:
- 벤치마크 실행 간에 극단적인 차이가 없는 경우
- 벤치마크 실행이 서로 완전히 독립적인 경우
- 단일 벤치마크 실행에 대한 반복 횟수가 과거 메트릭의 10% 미만인 경우
메트릭 유형, 브랜치 및 테스트 베드의 조합에 대한 과거 메트릭이 30개 미만인 경우 스튜던트의 t-검정 임계값을 사용해야 하며 Z-점수 임계값을 사용하지 말아야 합니다.
🐰 걱정마세요! 이해가 안 간다면 조금 후에 이해가 될 겁니다.
통계적 유의성 검정
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.5
와 1.0
사이의 소수여야 합니다.
예를 들어, Z-점수를 사용했고 가지고 있는 과거 메트릭 평균이 100
이고 표준편차가 10
이라면, 0.977
의 하단 경계는 80.05
에서 하단 경계 한도를 생성할 것입니다.
80.05
보다 작은 값은 알림을 생성할 것입니다.
상단 경계
임계값에 대한 상단 경계를 설정할 수 있습니다.
이것은 지연 메트릭 유형과 같이 더 큰 값이 성능 저하를 나타내는 경우에 사용됩니다.
값은 0.5
와 1.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
아래의 데이터베이스에 계속 저장됩니다.
접미사를 제거하고 원래의 벤치마크 이름으로 돌아가면
그대로 중단한 곳에서 계속 진행됩니다.
🐰 축하합니다! 이제 임계값 & 알림에 대해 모두 배웠습니다! 🎉