임계값 & 알림


재능있느라 어떻게 성능 회귀를 잡는지 알려주는 방법입니다. 임계값은 고유한 조합에 할당됩니다 : 브랜치, 테스트 베드, 그리고 측정값. 임계값은 하한선, 상한선 또는 둘 다 있어야 합니다. 각 경계는 경계 제한을 계산하는 데 사용됩니다. 그런 다음 모든 새로운 메트릭이 각 경계 제한에 대해 확인됩니다.

  • 하한선
    • 하한선은 작은 값이 성능 저하를 나타낼 때 사용되는 Throughput Measure와 같습니다.
  • 상한선
    • 상한선은 큰 값이 성능 저하를 나타낼 때 사용됩니다, 예를 들어 Latency Measure와 같습니다.

임계값의 여러 종류가 있습니다:

알림

새로운 메트릭이 임계값의 하한선 이하 또는 상한선 이상일 때 알림이 생성됩니다. 알림 발생 시 CI 빌드를 실패시키려면 bencher run CLI 서브커맨드를 사용할 때 --err 플래그를 설정하세요.

알림 억제

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

  • _bencher_ignore
  • BencherIgnore
  • -bencher-ignore

예를 들어, 벤치마크가 my_flaky_benchmark라는 이름으로 생성되었다면 이를 my_flaky_benchmark_bencher_ignore로 이름을 바꾸면 해당 벤치마크만 무시하게 됩니다. 무시된 벤치마크는 존재하는 임계값과 비교 검사를 받지 않습니다. 그러나 무시된 벤치마크의 메트릭은 여전히 저장됩니다. 예시를 계속하면, my_flaky_benchmark_bencher_ignore의 결과는 아직 데이터베이스의 my_flaky_benchmark 하에 저장됩니다. 접미사를 제거하고 원래의 벤치마크 이름으로 돌아가면, 이전에 중단한 시점부터 바로 다시 시작하게 됩니다.

정적 임계값

정적 임계값은 가장 기본적인 임계값입니다. 새로운 메트릭이 설정된 하한선 아래에 있거나 설정된 상한선 위에 있을 경우 경보가 생성됩니다. 즉, 하/상한선은 명확한 하/상한선 제한입니다. 하한선, 상한선 또는 둘 다 설정되어야 합니다. 정적 임계값은 메트릭의 값이 일정 범위 내에 있어야 할 때 가장 잘 작동합니다, 예를 들어 명령어 수와 같은 경우입니다.

  • 정적 임계값 하한선

    • 정적 임계값 하한선은 어떠한 부동소수점 수도 될 수 있습니다. 이는 더 작은 값이 성능 저하를 나타낼 경우 사용됩니다. 하한선은 반드시 상한선과 같거나 작아야 합니다, 만약 둘 다 명시되어 있다면.
    • 예를 들어, 하한선이 100으로 설정된 정적 임계값이 있다면 하한선 제한값도 마찬가지로 100이고 100보다 작은 값이 들어오면 경보가 생성됩니다.
  • 정적 임계값 상한선

    • 정적 임계값 상한선은 어떠한 부동소수점 수도 될 수 있습니다. 이는 더 큰 값이 성능 저하를 나타날 경우 사용됩니다. 상한선은 반드시 하한선과 같거나 커야 합니다, 만약 둘 다 명시되어 있다면.
    • 예를 들어, 상한선이 100으로 설정된 정적 임계값이 있다면 상한선 제한값도 마찬가지로 100이고 100보다 큰 값이 들어오면 경보가 생성됩니다.

통계적 임계값

다른 모든 임계값은 통계적 임계값입니다. 각 통계적 임계값은 과거 메트릭과 고유한 통계적 유의성 검정을 사용하여 경보가 생성되는지 여부를 결정합니다. 따라서 하한/상한은 다른 통계적 임계값에 따라 다른 것을 의미합니다. 하한 및/또는 상한 설정 외에 사용되는 과거 메트릭을 결정하는 컨트롤도 있습니다(즉, 선택된 표본).

  • 최소 표본 크기

    • 통계적 임계값에 대해 최소 표본 크기를 설정할 수 있습니다. 통계적 임계값은 과거 메트릭의 수가 최소 표본 크기 이상인 경우에만 통계적 유의성 검정을 실행합니다. 최소 표본 크기는 최대 표본 크기 이하여야 합니다. 만약 둘 다 명시되어 있다면.
  • 최대 표본 크기

    • 통계적 임계값에 대해 최대 표본 크기를 설정할 수 있습니다. 통계적 임계값은 통계적 유의성 검정을 위해 최신 과거 메트릭만 사용하도록 제한하며, 그 수는 최대 표본 크기로 제한됩니다. 최대 표본 크기는 최소 표본 크기 이상이어야 합니다. 만약 둘 다 명시되어 있다면.
  • 윈도우 사이즈

    • 통계적 임계값에 대해 초 단위의 윈도우 크기를 설정할 수 있습니다. 통계적 임계값은 주어진 시간 창에 의해 제한된 가장 최신의 과거 메트릭만 사용하도록 제한합니다. 통계적 유의성 검정을 위해.

퍼센트 임계치

퍼센트 임계치는 가장 간단한 통계적 임계치입니다. 새로운 측정치가 평균의 일정 비율 이하(하한) 또는 평균의 일정 비율 초과(상한)일 경우 경보가 생성됩니다. 하한, 상한 또는 둘 다 설정해야 합니다. 퍼센트 임계치는 측정치의 값이 알려진 좋은 범위 내에 있어야 할 때 가장 효과가 있습니다.

  • 퍼센트 임계치 하한

    • 퍼센트 임계치 하한은 0 이상의 어떤 퍼센트이든 소수 형태로 표현될 수 있습니다(예: 10%의 경우 0.10을 사용). 치수가 작아질수록 성능이 저하됨을 나타내는 경우에 사용됩니다.
    • 예를 들어, 하한을 0.10으로 설정한 퍼센트 임계치를 가지고 있고 국사적 측정치의 평균이 100인 경우 하한 한도는 90이고 90보다 작은 값은 경보를 생성합니다.
  • 퍼센트 임계치 상한

    • 퍼센트 임계치 상한은 0 이상의 어떤 퍼센트이든 소수 형태로 표현될 수 있습니다(예: 10%의 경우 0.10을 사용). 치수가 클수록 성능이 저하됨을 나타내는 경우에 사용됩니다.
    • 예를 들어, 상한을 0.10으로 설정한 퍼센트 임계치를 가지고 있고 국사적 측정치의 평균이 100인 경우 상한 한도는 110이고 110보다 큰 값은 경보를 생성합니다.
The Normal Distribution https://commons.wikimedia.org/wiki/File:The_Normal_Distribution.svg

z-점수 임계값

z-점수 임계값은 새로운 메트릭이 표준 편차 (σ)로 구성된 과거 메트릭 평균에서 얼마나 다른지를 측정하는 z-점수를 사용합니다.

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

  • 벤치마크 실행간에 극단적인 차이가 없을 때
  • 벤치마크 실행이 완전히 독립적일 때
  • 단일 벤치마크 실행의 반복 횟수가 과거 메트릭의 10% 미만일 때
  • 최소 30개의 과거 메트릭이 있을 때 (최소 샘플 크기 >= 30)

z-점수 임계값에서 표준 편차는 소수점 누적 비율로 표현됩니다. 이는 새로운 메트릭이 과거 메트릭의 특정 왼쪽 누적 비율 (하한) 또는 다른 오른쪽 누적 비율 (상한) 아래나 위에 있는 경우 경고가 생성됩니다. 하한, 상한 또는 둘 다 설정해야 합니다.

  • z-점수 임계값 하한

    • z-점수 임계값 하한은 0.51.0 사이의 임의의 양의 소수가 될 수 있습니다. 여기서 0.5는 평균을 나타내고 1.0은 모든 가능한 왼쪽 값 (-∞)을 나타냅니다. 이는 더 작은 값이 성능 하락을 가리킬 때 사용됩니다.
    • 예를 들어, z-점수 임계값으로 하한을 0.977로 설정했고 과거 메트릭의 평균이 100이고 표준 편차가 10이었다면, 하한 한계는 80.05가 되고 80.05보다 작은 값은 경고를 생성할 것입니다.
  • z-점수 임계값 상한

    • z-점수 임계값 상한은 0.51.0 사이의 임의의 양의 소수가 될 수 있습니다. 여기서 0.5는 평균을 나타내고 1.0은 모든 가능한 오른쪽 값 (∞)을 나타냅니다. 이는 더 큰 값이 성능 하락을 가리킬 때 사용됩니다.
    • 예를 들어, z-점수 임계값으로 상한을 0.977로 설정했고 과거 메트릭의 평균이 100이고 표준 편차가 10이었다면, 상한 한계는 119.95가 되고 119.95보다 큰 값은 경고를 생성할 것입니다.

t-검정 임계값

t-검정 임계값은 새로운 메트릭이 사용자의 역사적 메트릭의 평균이상 혹은 이하일 확률이 얼마나 되는지에 대한 신뢰 구간(CI) 을 측정합니다. 이는 스튜던트의 t-검정을 사용합니다.

t-검정 임계값은 다음과 같은 조건에서 가장 잘 동작합니다:

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

t-검정 임계값에서는 신뢰 구간이 소수점 단위의 신뢰도 퍼센트로 표현됩니다. 만약 새로운 메트릭이 특정 왼쪽 신뢰도 퍼센트(Lower Boundary) 이하이거나 역사적 메트릭의 특정 오른쪽 신뢰도 퍼센트(Upper Boundary) 이상일 경우 경고가 생성됩니다. Lower Boundary, Upper Boundary 또는 둘 모두를 설정해야 합니다.

  • t-검정 임계값 Lower Boundary

    • t-검정 임계값 Lower Boundary는 0.51.0 사이의 양의 소수가 될 수 있으며, 여기에서 0.5는 평균을 나타내고 1.0은 모든 가능한 왼쪽 값(-∞)을 나타냅니다. 이는 더 작은 값이 성능 저하를 나타낼 때 사용됩니다.
    • 예를 들어, Lower Boundary가 0.977인 t-검정 임계값을 사용하고 평균이 100이고 표준 편차가 1025개의 역사적 메트릭이 있다면, Lower Boundary Limit은 78.96이고, 78.96보다 작은 어떤 값이든 경고를 생성할 것입니다.
  • t-검정 임계값 Upper Boundary

    • t-검정 임계값 Upper Boundary는 0.51.0 사이의 양의 소수가 될 수 있으며, 여기에서 0.5는 평균을 나타내고 1.0은 모든 가능한 오른쪽 값(∞)을 나타냅니다. 이는 더 큰 값이 성능 저하를 나타낼 때 사용됩니다.
    • 예를 들어, Upper Boundary가 0.977인 t-검정 임계값을 사용하고 평균이 100이고 표준 편차가 1025개의 역사적 메트릭이 있다면, Upper Boundary Limit은 121.04이고, 121.04보다 큰 어떤 값이든 경고를 생성할 것입니다.
The Log Normal Distribution https://mathworld.wolfram.com/images/eps-svg/LogNormalDistribution_800.svg

로그 정규 임계값

로그 정규 임계값은 새로운 메트릭이 이력 메트릭의 중심 위치보다 높거나 낮을 확률을 로그 정규 분포를 통해 측정합니다.

로그 정규 임계값은 아래와 같은 경우에 가장 잘 작동합니다:

  • 벤치마크 실행이 서로 완전히 독립적인 경우
  • 단일 벤치마크 실행의 반복 횟수가 이력 메트릭의 10% 미만인 경우
  • 모든 데이터가 양수인 경우(음수의 자연로그는 undefined 입니다)

로그 정규 임계값에서는 소수 백분율로 표현된 확률입니다. 새로운 메트릭이 이력 메트릭의 일정한 왼쪽 퍼센트(하한) 아래거나 일정한 오른쪽 퍼센트(상한) 위일 경우 경고가 생성됩니다. 하한, 상한 또는 둘 다 설정해야 합니다.

  • 로그 정규 임계값 하한

    • 로그 정규 임계값 하한은 0.51.0 사이의 양의 소수일 수 있습니다. 여기서 0.5는 중심 위치를 나타내고 1.0은 모든 가능한 왼쪽 값(-∞)을 나타냅니다. 작은 값이 성능 저하를 나타내는 경우 사용됩니다.
    • 예를 들어, 하한이 0.977인 로그 정규 임계값을 사용하고 이력 메트릭이 100을 중심으로 25개 있고 이전에 200의 이상치가 하나 있다면, 하한 한도는 71.20이 되며 71.20보다 작은 값은 경고를 생성합니다.
  • 로그 정규 임계값 상한

    • 로그 정규 임계값 상한은 0.51.0 사이의 양의 소수일 수 있습니다. 여기서 0.5는 중심 위치를 나타내고 1.0은 모든 가능한 오른쪽 값(∞)을 나타냅니다. 큰 값이 성능 저하를 나타내는 경우 사용됩니다.
    • 예를 들어, 상한이 0.977인 로그 정규 임계값을 사용하고 이력 메트릭이 100을 중심으로 25개 있고 이전에 200의 이상치가 하나 있다면, 상한 한도는 134.18이 되며 134.18보다 큰 값은 경고를 생성합니다.
Interquartile Range https://access.openupresources.org/curricula/our6-8math/embeds/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBbTRmIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--941ca9b24415706ee262cc85b237c99ba4ca015b/6.8.19.Images.student.summary.03_en.svg

사분위수 범위 임계값

사분위수 범위 임계값은 신규 메트릭이 당신의 기록적인 메트릭들의 중앙값 보다 얼마나 많은 배수로 사분위수 범위 (IQR) 위 또는 아래에 있는지를 측정합니다. 만약 새로운 메트릭이 IQR의 특정 배수에서 중앙값 아래 (하한)이거나 당신의 기록적인 메트릭의 중앙값에서 IQR의 특정 배수 이상 (상한)이라면 경고가 생성됩니다. 하한, 상한 또는 둘 다 설정해야 합니다.

  • 사분위수 범위 임계값 하한

    • 사분위수 범위 임계값 하한은 0(예: 2x를 위해 2.0 사용) 이상의 어떤 배율이 될 수 있습니다. 이것은 더 작은 값이 성능 저하를 나타낼 때 사용됩니다.
    • 예를 들어, 하한이 2.0으로 설정된 사분위수 범위 임계값이 있고 기록적인 메트릭들이 중앙값이 100, 사분위수 범위가 10이라면 하한 제한은 80이 될 것이고 80보다 작은 모든 값은 경고를 생성할 것입니다.
  • 사분위수 범위 임계값 상한

    • 사분위수 범위 임계값 상한은 0(예: 2x를 위해 2.0 사용) 이상의 어떤 배율이 될 수 있습니다. 이것은 더 큰 값이 성능 저하를 나타낼 때 사용됩니다.
    • 예를 들어, 상한이 2.0으로 설정된 사분위수 범위 임계값이 있고 기록적인 메트릭들이 중앙값이 100, 사분위수 범위가 10이라면 상한 제한은 120이 될 것이고 120보다 큰 모든 값은 경고를 생성할 것입니다.

델타 사분위수 범위 임계값

델타 사분위수 범위 임계값은 평균 백분율 변경치(Δ)의 배수(즉, 사분위수 범위 (IQR)에 해당하는) 측정치가 기존 Metric의 중위수에 비해 얼마나 높거나 낮은지를 측정합니다. 새로운 Metric이 기존 Metric의 중위수로부터 특정 배수만큼 ΔIQR보다 낮은 경우(하한) 또는 특정 배수만큼 ΔIQR보다 높은 경우(상한), 경고가 생성됩니다. 하한, 상한 또는 두 가지 모두를 설정해야 합니다.

  • 델타 사분위수 범위 임계값 하한

    • 델타 사분위수 범위 임계값 하한은 0이상의 모든 배수(ex: 2x에 대해 2.0 사용)가 될 수 있습니다. 이는 성능이 감소함을 나타내는 더 작은 값일 경우 사용됩니다.
    • 예를 들어, 하한이 2.0으로 설정된 델타 사분위수 범위 임계값이 있고, 기존의 Metric이 중위수 100, 사분위수 범위 10, 평균 델타 사분위수 범위가 0.2 (20%)라면, 하한 한계값은 60이 될 것이고, 60보다 작은 값은 모두 경고를 발생시킬 것입니다.
  • 델타 사분위수 범위 임계값 상한

    • 델타 사분위수 범위 임계값 상한은 0이상의 모든 배수(ex: 2x에 대해 2.0 사용)가 될 수 있습니다. 이는 성능이 감소함을 나타내는 더 큰 값일 경우 사용됩니다.
    • 예를 들어, 상한이 2.0으로 설정된 델타 사분위수 범위 임계값이 있고, 기존의 Metric이 중위수 100, 사분위수 범위 10, 평균 델타 사분위수 범위가 0.2 (20%)라면, 상한 한계값은 140이 될 것이고, 140보다 큰 값은 모두 경고를 발생시킬 것입니다.


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


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

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