Overview
Track performance improvements for the parallel execution pipeline (exec3). The goal is to get steady-state block processing as close to flat GC allocation as possible — block processing is cyclical, so with no RPC traffic the memory profile should be flat.
Current observations (branch: exec3-parallel-direct-finalize)
- Parallel alloc ~13.5GB vs serial ~7.5GB — nearly 2x memory overhead from version maps, read/write sets, and TxResult collector buffers
- RPC tip staleness —
eth_blockNumber can lag 60+ blocks behind actual committed tip during batch processing. Root cause: shared domains not shared with RPC provider, and RPC waits for DB transaction rotation instead of reading from in-memory cache
- Batch buffer overflow —
buf=510MB/500MB seen in logs, suggesting batch size accounting isn't tight enough
Improvement areas
Memory / GC
RPC tip latency
Batch sizing
Finalize path (follow-on from #19824)
Measurement
pprof_monitor.sh captures periodic heap profiles + metrics CSV for parallel vs serial comparison
go tool pprof -diff_base=early.pb.gz late.pb.gz to identify growing allocations
- Monitor: block number, heap alloc, sys memory, tip age — every 60s
Related
🤖 Generated with Claude Code
Overview
Track performance improvements for the parallel execution pipeline (
exec3). The goal is to get steady-state block processing as close to flat GC allocation as possible — block processing is cyclical, so with no RPC traffic the memory profile should be flat.Current observations (branch: exec3-parallel-direct-finalize)
eth_blockNumbercan lag 60+ blocks behind actual committed tip during batch processing. Root cause: shared domains not shared with RPC provider, and RPC waits for DB transaction rotation instead of reading from in-memory cachebuf=510MB/500MBseen in logs, suggesting batch size accounting isn't tight enoughImprovement areas
Memory / GC
RPC tip latency
Batch sizing
Finalize path (follow-on from #19824)
finalizeTxdirect pathMeasurement
pprof_monitor.shcaptures periodic heap profiles + metrics CSV for parallel vs serial comparisongo tool pprof -diff_base=early.pb.gz late.pb.gzto identify growing allocationsRelated
🤖 Generated with Claude Code