-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[R4R]: Improve state prefetch #950
Merged
brilliant-lx
merged 2 commits into
bnb-chain:develop
from
setunapo:improve_state_prefetch
Jun 24, 2022
Merged
[R4R]: Improve state prefetch #950
brilliant-lx
merged 2 commits into
bnb-chain:develop
from
setunapo:improve_state_prefetch
Jun 24, 2022
Conversation
This file contains 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
setunapo
force-pushed
the
improve_state_prefetch
branch
from
June 17, 2022 08:02
17476e4
to
6e921f5
Compare
For state prefetch, no need to check transaction's nonce, since the transaction's result will be discarded anyway.
setunapo
force-pushed
the
improve_state_prefetch
branch
2 times, most recently
from
June 17, 2022 22:56
56eca61
to
5c63bf9
Compare
setunapo
force-pushed
the
improve_state_prefetch
branch
2 times, most recently
from
June 20, 2022 01:10
c224b6f
to
b188095
Compare
unclezoro
reviewed
Jun 20, 2022
setunapo
force-pushed
the
improve_state_prefetch
branch
2 times, most recently
from
June 20, 2022 05:50
52f630c
to
a14317d
Compare
unclezoro
previously approved these changes
Jun 20, 2022
unclezoro
changed the title
[WIP]: Improve state prefetch
[R4R]: Improve state prefetch
Jun 20, 2022
setunapo
force-pushed
the
improve_state_prefetch
branch
from
June 20, 2022 05:56
a14317d
to
3510b90
Compare
qinglin89
reviewed
Jun 20, 2022
setunapo
force-pushed
the
improve_state_prefetch
branch
from
June 20, 2022 06:45
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
setunapo
force-pushed
the
improve_state_prefetch
branch
from
June 20, 2022 07:00
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
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
AsMessageNoNonceCheck
to 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