Performance Benchmarks
Comprehensive guide to performance benchmarking and regression testing
Rivellum benchmark documentation now treats validity gates as first-class. The
project still uses rivellum-bench, but sustained-load claims must be tied to
benchmark mode, topology, storage mode, and worker validation.
Current Benchmark Model
sustained-load defaults to continuous mode:
- start generators
- run warmup as unmeasured lead-in
- capture baselines while load is still flowing
- measure without restarting generators or resetting nonces
- stop submission after the measured window
- drain accepted work for accounting
--premeasure-drain is still available, but it is debug-only
isolated_premeasure_drain mode and must not be presented as sustained
throughput.
Valid Throughput Baselines
Current valid single-lane role-distributed external-worker baselines are drawn from clean continuous runs with leader-authoritative startup nonce fetch and no nonce rejects:
| Offered target | Commit TPS | Steady commit TPS | Finality p50 / p95 / max | Notes |
|---|---|---|---|---|
| 5,000 | 4,239 | 4,957 | 25 ms / 97 ms / 203 ms | valid baseline |
| 5,000 | 4,263 | 4,983 | 26 ms / 97 ms / 259 ms | valid baseline |
| 7,000 | 4,395 | 5,136 | 30 ms / 133 ms / 467 ms | valid baseline |
These are role-distributed runs from the current external-worker path with
nt_rejected_stale=0 and worker activity proven in metrics.
Diagnostic Results
Some recent runs are diagnostic only and must not be headlined as protocol throughput:
- PoUW outbox
disabledmode is an A/B control to isolate hot-path disk cost. - isolated premeasure drain mode is a debug mode, not a sustained benchmark.
- runs with stale nonce rejects, worker failures, dispatch drops, ENOSPC, or compromised infrastructure are invalid as baselines.
Required Validity Gates
A run is only a sustained throughput baseline if all of the following hold:
benchmark_mode = continuous- actual offered TPS is reported, not just target rate
- topology is declared
- storage mode is declared
worker_jobs_received_total > 0andworker_jobs_completed_total > 0in external-worker modeworker_jobs_failed_total = 0leader_worker_results_received_totalcatches upnonce_rejected_total = 0nt_rejected_stale = 0dispatch_dropped_total = 0batches_failed = 0- rejection receipts are not counted as successes
- no ENOSPC, active swap, malware, or public-service compromise
Key Flags And Fields
Useful sustained-load fields and options include:
| Item | Meaning |
|---|---|
--rate | target offered TPS |
--warmup | unmeasured lead-in |
--measured-duration | measurement window |
--worker-urls | committee-worker metrics surfaces |
--metrics-urls | commit-authoritative metrics surfaces |
--topology role-distributed | explicit topology declaration |
--premeasure-drain | debug-only isolated mode |
benchmark_mode | continuous or isolated_premeasure_drain |
isolated_premeasure_drain_* | diagnostic fields, null in continuous mode |
Interpreting Current Results
- The current clean external-worker single-lane path is in the low-to-mid 4k committed TPS range on the documented role-distributed setup.
- Disabled PoUW outbox mode can improve throughput materially, but it is not a canonical protocol result.
- The next identified hot-path target after PoUW isolation is per-intent state-root work inside remote worker dispatch.