Bootstrap performance feedback + prefetch optimization (zainod 0.3.1)
Hi all, just wanted to share a real-world bootstrap experience running zebrad 5.0.0 + zainod 0.3.1 on a self-hosted node (i7, 32GB DDR5, NVMe SSD via WSL2 ext4 — ~5.9 GB/s write speed).
The main bottleneck identified via htop was single-threaded RPC fetching in sync_to_height — one core at ~56%, zebrad nearly idle, disk barely used.
Replacing the sequential loop with a buffered(64) tokio prefetch pipeline (parallel block fetches, sequential writes) gave roughly x8–x10 speedup in the Sprout zone (17k–120k blocks). The remaining bottleneck is IndexedBlock::try_from() which is inherently sequential due to chainwork dependency.
Current rate in the 120k–200k zone: ~70–80 blocs/min with one core fully saturated. Estimated total bootstrap: several days on high-end hardware.
The patch is posted on GitHub issue #860. Would love to see DbV2 or signed snapshots move forward — bootstrap time is a real barrier for self-hosted node operators wanting sovereignty over their ZEC wallet.