perf(trie): reduce proof missed leaves by pre-dispatching all prefix set accounts #19074
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
During parallel proof computation, we had an 85.99% miss ratio where accounts encountered during the account trie walk were not pre-dispatched to parallel workers. This caused high synchronous database access on the critical path.
Metrics Before Fix:
page_get_inline
(MDBX): 6.7% CPU time in flamegraphRoot Cause:
Only accounts in
targets
(modified accounts from block) were pre-dispatched:But the trie walk encounters ALL accounts in the prefix set (modified + witnesses), so 86% of accounts triggered synchronous fallback at proof_task.rs:914-957.
Goal:
The change aims to ensure every account encountered during the trie walk has its storage root pre-computed in parallel.