[R4R]: Improve state prefetch#950
Merged
brilliant-lx merged 2 commits intobnb-chain:developfrom Jun 24, 2022
Merged
Conversation
17476e4 to
6e921f5
Compare
For state prefetch, no need to check transaction's nonce, since the transaction's result will be discarded anyway.
56eca61 to
5c63bf9
Compare
c224b6f to
b188095
Compare
unclezoro
reviewed
Jun 20, 2022
52f630c to
a14317d
Compare
unclezoro
previously approved these changes
Jun 20, 2022
a14317d to
3510b90
Compare
qinglin89
reviewed
Jun 20, 2022
3510b90 to
f79fa19
Compare
** replace atomic read by channel close to interrupt state prefetch ** try to do state prefetch when the prefetch thread is idle, no need to divide into 3 sub-arrays it will make the prefetchers workload balance
f79fa19 to
8c36d29
Compare
qinglin89
reviewed
Jun 20, 2022
forcodedancing
approved these changes
Jun 23, 2022
flywukong
approved these changes
Jun 23, 2022
yutianwu
approved these changes
Jun 23, 2022
qinglin89
approved these changes
Jun 24, 2022
This was referenced Jul 28, 2022
Merged
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Description
State Prefetch was first implemented in v1.1.8, see PR 704. It improved the performance of block process a lot by improving the snapshot cache hit rate.
This PR did not change its logic, but did some improvements.
Rationale
1.Use
AsMessageNoNonceCheckto skip nonce check for prefetch transactions.For state prefetch, no need to check transaction's nonce, since the transaction's result will be discarded anyway.
2.Improve the transaction dispatch policy
** Replace atomic read by channel close to interrupt state prefetch
** Try to do state prefetch when the prefetch thread is idle, no need to divide into 3 sub-arrays
Example
I add some tracing logs to show the workflow of state prefetch.

As the bellow tracing show, we have 3 prefetch thread. Before the PR, their workload is not balanced. After the PR, the workload is balanced.
Changes
No impact to users