-
Notifications
You must be signed in to change notification settings - Fork 48
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
pevm: support parallel merge mode #238
pevm: support parallel merge mode #238
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally LGTM, just a minor change needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Description
Currently, in our PEVM code, only the execution phase is parallelized. After the parallel execution ends, the results need to be merged serially into the StateDB. I have modified the merging process to be executed in parallel as well, which further improves the performance of the PEVM and reduces the time consumption.
Rationale
By providing a new ParallelStateDB to replace the original StateDB, it supports concurrent reading and writing of data.
Provide ParallelGasPool instead of the original GasPool to support gas calculation in a concurrent environment.
Other similar changes.
Example
Enable parallel merge mode by adding startup parameters:
Note that this startup parameter conflicts with parallel.unordered-merge, and when both are set, parallel.unordered-merge will be invalid.
Changes
Notable changes:
state.StateDBer
interface replaces direct references toStateDB
.TestBlockchainWithTxDAG
unit test. I found that the previous unit test had issues, as the code did not enter the branch that uses the DAG files.