Repository navigation
ci(benchmark): recalibrate the baseline after the Next 16.4 update - #797
Merged
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#768의 Next/SWC 16.3.6 → 16.4.2, React/react-dom 19.3.0 → 19.3.1 업데이트로 상대 시간 기준선이 달라졌습니다. Devup의 절대 빌드 시간이 느려진 회귀가 아닙니다. 사용자 방침에 따라 구현 변경과 분리하여 기준선만 재보정합니다.
변경
benchmark-baseline.json하나만 변경합니다. 9개 gated 행의 ratio, 독립 VM 10개의 calibration, 공식으로 계산한 timeTolerance, 새 출력/CSS 크기를 반영합니다. 예전 익명 calibration 값은 섞지 않습니다.benchmark-manifest.json과 baseline의 samples는 모두 3입니다. workflow, gate 공식, 최소 허용치, README 공개 표는 바꾸지 않습니다.원인: 동일 VM의 A/B/C 비교
A/B run 39390117341: 12개 회전 블록 × 3개 variant × 3행 × 7 cold builds = 756회입니다. 독립 VM 756개가 아니라 하나의 VM입니다.
cace4fca, Next/SWC 16.3.6, React 19.3.0, Oxc 0.151.0.347baaf9, Next/SWC 16.4.2, React 19.3.1, Oxc 0.154.0.블록별 paired 효과와 조건부 95% bootstrap 구간(50,000회, seed 7682026):
Tailwind control은 약 20%, Devup은 약 15% 빨라져 ratio만 상승합니다. Devup/Oxc 변경 없이 C에서 상승이 재현됩니다. Next, SWC, React 각각의 기여를 따로 분리한 실험은 아닙니다.
StyleX 이상치와 샘플 수 결정
수집 run 39403055275은 24 VM × 18행 × 7회 = 3,024회입니다. 일치 cohort는 14 VM이었습니다. 첫 10개 보정 / 나머지 4개 검증에서 3회·7회 모두 0/4 실패였지만, 이 유한 cohort의 모든 10/4 분할 교차 검증은 두 정책 모두 job 실패율 **7.14%**였습니다. 재사용된 4,004 예측은 독립 VM 4,004개가 아닙니다. 7회는 실패율 개선 없이 job 중앙 시간이 3회 추정 14.96분에서 7회 실측 29.99분으로 늘어, 3회 정책을 유지했습니다. 이전 3회 추정은 7회 순서의 앞부분(offset 0,2,5)이므로 아래의 실제 3회 순서(offset 0,6,12)로 다시 검증했습니다.
이전 VM 4(EPYC 9V45, image 20261012.334.1)는 18행 모두 절대 시간이 더 빨랐습니다. 같은 환경의 나머지 13 VM과 비교하면 StyleX+Devup 5.089434초 대 6.838033초(-25.57%), control 2.748376초 대 4.653252초(-40.94%)입니다. StyleX/control ratio는 1.851797 대 1.467871(+26.16%)입니다. 전체 VM의 느려짐이 아니라 빠른 호스트에서 이 행이 control보다 덜 빨라지는 상대 이상치입니다. CPU 이름만으로 원인을 확정하지 않으며, 느리다는 이유로 VM을 빼지 않았습니다.
이전 첫 3회 후보의 StyleX tolerance는 **73.41%**였습니다. 허용치가 약 70%라면 기준선 부근의 StyleX 행에서 그보다 작은 실제 회귀를 잡지 못합니다. 통과를 위해 그 값을 채택하거나 수동으로 허용치를 늘리지 않았습니다. 아래 native 재보정에서는 **23.64%**가 계산되었습니다. 이 값 역시 더 작은 회귀를 놓칠 수 있습니다.
실제 CI 절차 검증
검증 run 39418552771, 임시 harness
26d0ee9de10b5a6ff8181a1817f07bdf4f6ef49b. 보정과 독립 검증은 모두7188d5ffc2243048dd55f2b6cd845f4738959bfc에서 실행했습니다. PR 브랜치는 새 clone 시점의 최신 main **770aaac5977f1eae9771516b60868daed842e63c**에서 생성했으며, 완료된 baseline 파일만 복사했습니다. 최신 main에서 재측정했다고 주장하지 않습니다.bun benchmark.js**를 실행하고 그 JSON을 그대로 gate에 넣었습니다. 로컬 benchmark는 실행하지 않았습니다.0,1,2,4,5,6,7,8,10,12; 독립 holdout15,16,18,20,22,23,24,278개.ratio는 VM별 target/control 중앙값 비율 10개의 중앙값입니다.
timeTolerance=max(0.10,2*(max(calibration)-min(calibration))/median(calibration))를 그대로 사용합니다. 출력/CSS는 새 VM 10개의 각 중앙값을 다시 중앙값·반올림한 값입니다. 네이티브 JSON 입력 지원만 추가한 기존 offline writer를 사용했으며, 기존 정책 테스트와 malformed native 입력 6가지 거절 테스트를 통과했습니다.실패 공식도 그대로입니다:
ratio > baseline.ratio*(1+timeTolerance),bytes > floor(baseline.bytes*1.01),cssBytes > baseline.cssBytes+max(floor(baseline.cssBytes*0.05),32). 별도 개선안은 StyleX의 control 적합성 또는 사전에 선언한 호스트 계층화를 독립 PR에서 검토하는 것입니다. 이 PR에서는 공식이나 tolerance 정책을 바꾸지 않습니다.로컬 검증
C:\Users\devfive3901\AppData\Local\Temp\opencode\rc에서bun install --frozen-lockfile을 기본 isolated linker로 실행했습니다. lockfile 변경 없이 install 및 WASM-firstbun run build가 통과했습니다.CARGO_BUILD_JOBS=2, CI/RUST_MIN_STACK unset, 기본 Rust stack을 사용했습니다.bun lint와bun run test(Rust tarpaulin 포함)가 모두 통과했습니다. Bun 결과는 6649 pass / 0 fail, 89 snapshots, 25034 assertions입니다. 이전 환경의 Next webpack 3건과 plugin-utils reservation 1건도 이번 전체 실행에서는 실패하지 않았습니다.Refs #683