perf(trie): stack state trie overlays#24355
Conversation
Return overlay stacks from the in-memory state trie overlay manager on cache misses while filling the flattened cache in the background. Teach trie and hashed post-state overlay cursors to merge multiple overlays directly so callers can avoid blocking on uncached full-range overlays.
…trie-overlay-stacks
|
derek bench big-blocks slack=never |
|
✅ Benchmark complete! View job Benchmark Results
30 big blocks, 7 warmup, 10 run pairs Wait Time BreakdownPersistence Wait
Trie Cache Update Wait
Execution Cache Update Wait
ChartsGrafana Dashboard |
|
derek bench big-blocks blocks=80 bal=true slack=never |
|
✅ Benchmark complete! View job Benchmark Results
80 big blocks, 20 warmup, 10 run pairs, BAL: true Wait Time BreakdownPersistence Wait
Trie Cache Update Wait
Execution Cache Update Wait
ChartsGrafana Dashboard |
|
derek bench big-blocks blocks=150 baseline-args="--engine.persistence-threshold=9" feature-args="--engine.persistence-threshold=9" bal=true |
|
✅ Benchmark complete! View job Benchmark Results
150 big blocks, 37 warmup, 10 run pairs, BAL: true Wait Time BreakdownPersistence Wait
Trie Cache Update Wait
Execution Cache Update Wait
ChartsGrafana Dashboard |
|
derek bench big-blocks blocks=150 baseline-args="--engine.persistence-threshold=9" feature-args="--engine.persistence-threshold=9" bal=true |
|
✅ Benchmark complete! View job Benchmark Results
150 big blocks, 37 warmup, 10 run pairs, BAL: true Wait Time BreakdownPersistence Wait
Trie Cache Update Wait
Execution Cache Update Wait
ChartsGrafana Dashboard
|
|
derek bench big-blocks blocks=150 bal=true |
|
✅ Benchmark complete! View job Benchmark Results
150 big blocks, 37 warmup, 10 run pairs, BAL: true Wait Time BreakdownPersistence Wait
Trie Cache Update Wait
Execution Cache Update Wait
ChartsGrafana Dashboard
|
|
derek bench big-blocks=true blocks=50 warmup=12 baseline=main feature=mediocregopher/state-trie-overlay-stacks bal=true cores=0 run-pairs=2 otlp=true slack=never samply baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
|
|
✅ Benchmark complete! View job Benchmark ResultsConfiguration
30 big blocks, 7 warmup, 10 run pairs, BAL: true Wait Time BreakdownPersistence Wait
Trie Cache Update Wait
Execution Cache Update Wait
ObservabilityCharts |
|
derek bench big-blocks=true blocks=30 warmup=7 baseline=main feature=mediocregopher/state-trie-overlay-stacks bal=true cores=0 run-pairs=10 otlp=true slack=never baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
✅ Benchmark complete! View job Benchmark ResultsConfiguration
30 big blocks, 7 warmup, 10 run pairs, BAL: true Wait Time BreakdownPersistence Wait
Trie Cache Update Wait
Execution Cache Update Wait
Target Metrics
ObservabilityCharts |
|
derek bench big-blocks=true blocks=50 warmup=12 baseline=main feature=mediocregopher/state-trie-overlay-stacks bal=true cores=0 run-pairs=2 otlp=true slack=never samply baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
✅ Benchmark complete! View job Benchmark ResultsConfiguration
50 big blocks, 12 warmup, 2 run pairs, BAL: true Wait Time BreakdownPersistence Wait
Trie Cache Update Wait
Execution Cache Update Wait
ObservabilityChartsSamply Profiles
|
|
derek bench big-blocks=true blocks=30 warmup=7 baseline=main feature=mediocregopher/state-trie-overlay-stacks bal=true cores=0 run-pairs=10 otlp=true slack=never baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
derek bench big-blocks=true blocks=50 warmup=12 baseline=main feature=mediocregopher/state-trie-overlay-stacks bal=true cores=0 run-pairs=2 otlp=true slack=never samply baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
✅ Benchmark complete! View job Benchmark ResultsConfiguration
30 big blocks, 7 warmup, 10 run pairs, BAL: true Wait Time BreakdownPersistence Wait
Trie Cache Update Wait
Execution Cache Update Wait
Target Metrics
ObservabilityCharts |
|
|
|
derek bench big-blocks=true blocks=30 warmup=7 baseline=main feature=mediocregopher/state-trie-overlay-stacks bal=true cores=0 run-pairs=10 otlp=true slack=never baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
derek bench big-blocks=true blocks=50 warmup=12 baseline=main feature=mediocregopher/state-trie-overlay-stacks bal=true cores=0 run-pairs=2 otlp=true slack=never samply baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
|
|
|
|
derek bench big-blocks=true blocks=30 warmup=7 baseline=main feature=mediocregopher/state-trie-overlay-stacks bal=true cores=0 run-pairs=10 otlp=true slack=never baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
✅ Benchmark complete! View job Benchmark ResultsConfiguration
30 big blocks, 7 warmup, 10 run pairs, BAL: true Wait Time BreakdownPersistence Wait
Trie Cache Update Wait
Execution Cache Update Wait
ObservabilityCharts |
|
derek bench big-blocks=true blocks=30 warmup=7 baseline=main feature=mediocregopher/state-trie-overlay-stacks bal=true cores=0 run-pairs=10 otlp=true slack=never baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
|
|
derek bench big-blocks=true blocks=30 warmup=7 baseline=main feature=mediocregopher/state-trie-overlay-stacks bal=true cores=0 run-pairs=10 otlp=true slack=never baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
|
|
derek bench big-blocks=true blocks=30 warmup=7 baseline=main feature=mediocregopher/state-trie-overlay-stacks bal=true cores=0 run-pairs=10 otlp=true slack=never baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
✅ Benchmark complete! View job Benchmark ResultsConfiguration
30 big blocks, 7 warmup, 10 run pairs, BAL: true Wait Time BreakdownPersistence Wait
Trie Cache Update Wait
Execution Cache Update Wait
ObservabilityCharts |
|
derek bench big-blocks bal baseline-args=--engine.persistence-threshold=9 feature-args=--engine.persistence-threshold=9 |
|
❌ Invalid bench command Unknown argument(s): Usage: |

































Returns state trie overlay stacks on uncached manager lookups while filling flattened overlays in the background. This lets overlay cursors merge cached prefixes with per-block overlays without blocking on full-range overlay computation.