After running each configuration 3 times for statistical significance, the baseline configuration performs best for this workload. The tuned configurations show regressions, not improvements.
| Config | Ggas/s | p50 (ms) | p90 (ms) | p99 (ms) |
|---|---|---|---|---|
| baseline | 0.917 | 28.18 | 59.02 | 80.75 |
| write_buffer_size_128mb | 0.767 | 35.54 | 52.40 | 81.16 |
| l0_stop_trigger_100 | 0.737 | 36.55 | 61.34 | 90.36 |
| Config | Ggas/s Δ% | p90 Δ% | p99 Δ% | Verdict |
|---|---|---|---|---|
| write_buffer_size_128mb | -16.30% | -11.22% | +0.51% | ❌ REJECT |
| l0_stop_trigger_100 | -19.56% | +3.93% | +11.91% | ❌ REJECT |
| Metric | Baseline | 128mb Buffer | L0 Stop 100 |
|---|---|---|---|
| trie_updates | 0.285 | 0.214 | 0.302 |
| write_state | 0.131 | 0.095 | 0.128 |
| hashed_state | 0.125 | 0.099 | 0.130 |
| Backend | Baseline | 128mb Buffer | L0 Stop 100 |
|---|---|---|---|
| MDBX | 0.542 | 0.409 | 0.561 |
| RocksDB | 0.000 | 0.025 | 0.031 |
| Static Files | 0.010 | 0.008 | 0.010 |
| Backend | Baseline | 128mb Buffer | L0 Stop 100 |
|---|---|---|---|
| MDBX Commit | 0.000783 | 0.000830 | 0.000818 |
| RocksDB Commit | ~0 | 0.000033 | 0.000038 |
| Static Files Commit | 0.000382 | 0.000388 | 0.000385 |
| Metric | Baseline | 128mb Buffer | L0 Stop 100 |
|---|---|---|---|
| Total Time (s) | 0.542 | 0.409 | 0.562 |
| Blocks per Save | 12.33 | 9.33 | 12.00 |
The default RocksDB configuration achieves 0.917 Ggas/s, outperforming both tuned configurations by 16-20%.
In all configurations, RocksDB write/commit time is negligible:
- Baseline: ~0 seconds (RocksDB not heavily used)
- Tuned: 25-31ms for writes, <40µs for commits
Across all configurations, write_trie_updates accounts for ~50% of save_blocks time. This is CPU-bound work, not I/O-bound.
MDBX write time (409-561ms) is the primary storage bottleneck, not RocksDB.
- -16% throughput but -11% p90 latency
- Fewer blocks per save (9.33 vs 12.33) indicates more frequent flushes
The initial single-run results showed:
write_buffer_size_128mb: +9.32% throughput improvementl0_stop_trigger_100: -11.10% p99 improvement
These were due to:
- Block variance: Different block ranges have different gas/complexity
- Warm-up effects: First run after unwind differs from subsequent runs
- Statistical noise: Single samples have high variance
| Priority | Recommendation |
|---|---|
| 1 | Keep baseline defaults - They perform best for this workload |
| 2 | Do not increase WRITE_BUFFER_SIZE - Hurts throughput |
| 3 | Do not increase LEVEL_ZERO_STOP_WRITES_TRIGGER - Increases latency |
| 4 | Focus optimization efforts on trie computation, not RocksDB tuning |
| Run | Ggas/s | p90 (ms) | p99 (ms) |
|---|---|---|---|
| baseline_run1 | 1.051 | 39.27 | 51.41 |
| baseline_run2 | 0.905 | 60.87 | 98.97 |
| baseline_run3 | 0.795 | 76.91 | 91.87 |
| write_buffer_128mb_run1 | 0.735 | 51.24 | 78.59 |
| write_buffer_128mb_run2 | 0.782 | 51.70 | 85.32 |
| write_buffer_128mb_run3 | 0.785 | 54.25 | 79.56 |
| l0_stop_100_run1 | 0.716 | 59.87 | 92.16 |
| l0_stop_100_run2 | 0.799 | 55.84 | 82.16 |
| l0_stop_100_run3 | 0.697 | 68.31 | 96.77 |
Generated from 9 benchmark runs on Feb 2, 2026