[storage/qmdb/bench] chained-growth benchmark#3633
Conversation
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
commonware-mcp | aa59e3e | Apr 20 2026, 07:26 PM |
dca4b7e to
d164008
Compare
Deploying monorepo with
|
| Latest commit: |
aa59e3e
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://a4bf433c.monorepo-eu0.pages.dev |
| Branch Preview URL: | https://chained-growth-bench.monorepo-eu0.pages.dev |
There was a problem hiding this comment.
Pull request overview
Adds a new QMDB benchmark focused on “chained-growth” merkleization behavior in Current variants, intended to stress the committed-bitmap parent-chain walk cost under a deep chain with very sparse overlays.
Changes:
- Introduces
chained_growthCriterion benchmark that seeds a large DB, pre-builds a deep speculative/commit chain, then measures additional merkleize+apply iterations. - Adds the new benchmark module to the QMDB benches entrypoint so it runs as part of the suite.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
storage/src/qmdb/benches/chained_growth.rs |
New chained-growth benchmark implementation for Current fixed+MMB variants at chunk sizes 32 and 256. |
storage/src/qmdb/benches/bench.rs |
Registers the new chained_growth benchmark group in criterion_main!. |
d164008 to
ad618b3
Compare
418ee05 to
f17b653
Compare
f17b653 to
8204b8b
Compare
8204b8b to
aa59e3e
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #3633 +/- ##
==========================================
- Coverage 95.81% 95.81% -0.01%
==========================================
Files 440 440
Lines 167922 167922
Branches 3922 3922
==========================================
- Hits 160900 160891 -9
- Misses 5800 5806 +6
- Partials 1222 1225 +3 see 3 files with indirect coverage changes Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
Summary
Add a
chained_growthbenchmark to theqmdbsuite that exercises the pipelined-speculation workload: applying a parent batch while a child batch is still alive, repeatedly, to exercise Current QMDB's committed-bitmap parent chain.Benchmark shape
NUM_KEYS=1_000_000keys, then grow a chain ofPREBUILT_CHAIN=10_000batches applying each parent while the child is alive. Commit and sync, so buffered seed data doesn't leak into the timed region's fsync.batches=100more merkleize + apply iterations on top of the pre-built chain, then drop the final parent.Each batch contains a single random key update (
UPDATES_PER_BATCH=1) so that each batch's chunk overlay covers a tiny fraction of the total chunks. Combined with the deep pre-built chain, this forces each chunk read during merkleize to walk the chain before finding a matching layer — exposing the asymptotic cost of chain growth that shallower-coverage workloads mask.Only Current variants are exercised (the chain-growth behavior is specific to Current's bitmap batching) with chunk sizes of 32 & 256. Variants are limited to fixed and MMB since value type and merkle family aren't relevant for this bench.