Repository navigation
feat: skip timing-only gate rounds under advisory walltime - #268
Merged
Merged
Conversation
- Rounds 3 and 4 only add a second walltime sample per side, which advisory walltime never fails on - Measure was the largest gate phase once the base build was seeded
Contributor
soothfast gate: soothfast-registry |
Contributor
soothfast gate: soothfast-measure |
Contributor
soothfast gate: soothfast-docs |
Contributor
soothfast gate: soothfast-report |
Contributor
soothfast gate: soothfast-site |
Contributor
soothfast gate: soothfast-spec |
Contributor
soothfast gate: soothfast-sdk |
This branch was successfully deployed
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.
What changed
With
[gate] walltime = "advisory",gate --against-refnow measures each side once, so it runs two rounds instead of four. Rounds 3 and 4 skip the gating counters and only add a second walltime sample per side. Advisory walltime never fails, so that second sample can't change the verdict. On a real project's PR gate the measure phase took 5.2 of 15.6 minutes over four rounds. Now that the base build is seeded, measuring is the longest phase of that gate.walltime_advisoryfromgateandgate acceptthroughresolveintomeasure_ref_interleaved. Under advisory the timing-only rounds 3 and 4 are not run.gate: round 1/2 (head)under advisory,round n/4otherwise.combine_roundsunchanged. Its caller uses each side's first round directly when the timing-only rounds were skipped.docs/gating.mdthat advisory mode measures each side once, head first. A baseline it saves, and a run it stores in the run cache, then holds one walltime sample per item instead of the minimum of two.Instructions, Ir, allocations, size and a bench's own
p99claim come from the first round, so they gate exactly as before. The default,walltime = "hard", still runs four rounds.Why
The measure phase is now the largest part of an adopter's PR gate. Half of it bought a walltime sample that advisory mode reports as SOFT at most.
How was this tested
--against-ref HEAD~5, one item,--no-reuse-base --no-item-cache). Withwalltime = "advisory"it printedround 1/2 (head)andround 2/2 (base)and passed with exit 0. Without the setting it printed rounds 1/4 to 4/4 and passed with exit 0. With one filtered item each round printed 0s, so this run shows the round count, not the time saved.make check: exit 0, 449, 6 and 4 tests passed (test: 1 of 10 packages selected, 3 binaries run).cargo clippy -p cargo-soothfast --all-targets -- -D warnings: clean.make gate BASE=masterwas not run. No measured code changed.Checklist
make checkpasses (fmt, clippy-D warnings,cargo test --workspace)make gate BASE=masterpasses, or any intentional cost change is explained above///doc commentsREADME.md,docs/,soothfast:bind/soothfast:claimmarkers) updated if behavior changed