8000 ci(bench): report regressions per suite, show muted alerts, cut insert_file time (#393) by adityamukho · Pull Request #417 · project-minigraf/minigraf · GitHub
[go: up one dir, main page]

Skip to content

ci(bench): report regressions per suite, show muted alerts, cut insert_file time (#393) - #417

Merged
adityamukho merged 1 commit into
mainfrom
ci/393-bench-alerting
Sep 26, 2026
Merged

adityamukho merged 1 commit into
mainfrom
ci/393-bench-alerting

Conversation

@adityamukho
Copy link
Copy Markdown
Collaborator

Closes #393.

Changes

Alerting (.github/workflows/bench.yml)

  • Each suite gets its own issue, titled Benchmark regression: <suite>. While it is open, new repeated alerts for that suite are added as comments. Before this, one open issue muted every suite.
  • Every outcome now goes to the job summary and a warning annotation. That includes alerts left unreported because they did not repeat on the previous run. The Bencher step is continue-on-error, so without this the run looks clean.
  • Threshold 0.999 for insert_file, open and checkpoint, the same as concurrent_file/*. These do file I/O and fsync, which is noisy on shared runners.
  • actions/checkout@v7, actions/cache@v6 (+ cache/restore@v6), actions/github-script@v9, all Node 24. The script only requires fs, so the v9 ESM change does not affect it.

insert_file run time (benches/helpers/mod.rs)

  • Criterion runs a benchmark's setup closure once per sample, plus warm-up. populate_file(1_000_000) was rebuilt about 11 times for each of the three insert_file/*/1m benchmarks. That is most of the 3h20m in run 36106225599.
  • populate_file now builds each size once in a shared temp dir and copies it to the caller's path. Each caller still gets a fresh, identical checkpointed file, so the measurements do not change and Bencher history stays comparable. open/checkpointed and concurrent_file/* get the same speedup.
  • criterion_main! is written out by hand so the fixture dir is deleted at exit.

Already done / not in this PR

Testing

  • cargo bench --no-run builds. A quick run of insert_file/single_fact/{1k,10k,100k} and open/checkpointed/100k works, and the fixture dir is removed afterwards.
  • The workflow YAML parses and the github-script body passes node --check.
  • The workflow has not run yet. I did not dispatch it from the branch because it uploads to Bencher with --branch main. It will run at the next nightly after merge.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BedF9ZmqVZLkvDwn91fuKy

…t_file time (#393)

- Build each populate_file fixture once and copy it per call. Criterion
  runs the setup closure once per sample plus warm-up, so the 1m fixture
  was rebuilt ~11 times per benchmark and insert_file took 3h+.
- One regression issue per suite ("Benchmark regression: <suite>"),
  commented on while open, instead of one repo-wide issue.
- Write every outcome, including unreported single-run alerts, to the
  job summary and as a warning annotation.
- Threshold 0.999 for insert_file, open and checkpoint (file I/O noise).
- actions/checkout@v7, actions/cache@v6, actions/github-script@v9 (Node 24).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BedF9ZmqVZLkvDwn91fuKy
@codecov
codecov Bot commented Sep 26, 2026
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@adityamukho
adityamukho merged commit 73eb7c2 into main Sep 26, 2026
17 checks passed
@adityamukho
adityamukho deleted the ci/393-bench-alerting branch September 26, 2026 13:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ci(bench): regression alerts have been muted since #301; fix alerting and noisy thresholds

1 participant

0