Repository navigation
measure: cold-cache attribution of varve verify (REQ-VERIFYPAR-001 clause 1) - #341
Merged
Merged
Conversation
One-off script and GitHub-hosted workflow that build a 6-payload layer (one 2 GiB random payload) offline through the systest deposit path, then take `varve verify --timing` warm and cold (drop_caches) plus the small-layer baseline, and print a machine-readable summary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019TNtfRjLNhEz82G2ggeeNu
VER-VERIFYPAR-001 records run 42402881731 of measure-verify.yml on a GitHub-hosted runner. With a 2 GiB payload, the cold medians are read 3.655 s, hash 1.376 s and wall 5.093 s; warm, read 0.180 s and hash 1.357 s. On this runner reading dominates cold: 72% of the wall. That is clause 1's own withdrawal condition. But the verdict depends on the disk: the runner reads cold at about 560 MiB/s, and a local NVMe disk at several GB/s would leave hashing dominant. The measured shape also has a single large payload, so concurrent per-payload digests would gain almost nothing on it. Whether to withdraw, reword or keep the requirement is the maintainer's call; it stays proposed. This artifact discharges clause 1 only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019TNtfRjLNhEz82G2ggeeNu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019TNtfRjLNhEz82G2ggeeNu
Contributor
Author
|
Reproduction: pushing the rebased branch re-ran the workflow (42438484840) on the same runner class (AMD EPYC 7763, 4 vCPU). Medians of 5:
The two runs agree within 0.5%, so the instrument is stable on this runner. The limit on what this shows still holds: it is this runner's disk. 🤖 Generated with Claude Code |
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.
This PR discharges clause 1 of REQ-VERIFYPAR-001, which is in v0.47.0's lean scope. Clause 1 says to measure verify's per-stage cost on a runner with a cold page cache before writing any concurrency.
It adds the instrument and records its first result. It changes no varve behaviour.
What lands
tools/measure/verify-cold.shbuilds a local layer offline with a throwaway key, usingtools/systest/lib.sh'ssystest_sign_spec_and_pin, the same path the system tests take. The layer has one 2048 MiB random payload and five 64 KiB ones. The script then runsvarve verify --timingin three cases:sync; drop_caches 3before each run;It prints the environment and a per-run and median block for each case. Off Linux, or without passwordless sudo, it says the cold case was skipped and implies no figure.
.github/workflows/measure-verify.ymlruns the script.measure/**and onworkflow_dispatchonly, so it is never a PR gate and is not a required check.ubuntu-latest, withcontents: read, and its actions are pinned to the same commits asci.yml.action_coverage,pr_gates_cannot_be_switched_offandrunner_trust_boundaryaccept it unchanged.VER-VERIFYPAR-001, method
analysis, records the result. It discharges clause 1 only; the requirement staysproposed.The result
Run 42402881731 used an AMD EPYC 7763 runner with 4 vCPUs, sha_ni and ext4. Medians of 5 runs:
On this runner, reading dominates when the cache is cold: 72% of the wall time. That is the requirement's own condition for withdrawal. Two limits keep it from being a verdict:
What happens to the requirement is a decision for the maintainer (factory-notice
20261107T193300-80b3fc). This PR records the evidence for that decision; it does not make it.Because this branch matches
measure/**, pushing it re-ran the workflow, which re-checks the instrument on the rebased tree.Local gates, rebased on 72c8868 (#340)
cargo fmt --check: OK.-D warnings: clean.rivet validate: exits 0.rivet check verification-evidence, trace-gate, claim-check, tracepack-check and review-check all exit 0.tools/systest/install-shadow.sh: exits 0.-S warning: clean.tools/check-py-floor.py: exits 0.🤖 Generated with Claude Code
https://claude.ai/code/session_019TNtfRjLNhEz82G2ggeeNu