Configurable DB Mmap Size for Beacon Node and Validator Client #8448
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.
What type of PR is this?
What does this PR do? Why is it needed?
Currently, we notice that operating a large number of validators has really terrible performance during the first 10-30 minutes of operation, with many deadlines exceeded and long read/write times for db operations. After some investigation into bolt db defaults, looks like they have a very conservative default for the initial mmap size. During startup, bolt dynamically remaps the file to match the resource demand of the software, and during this time, read operations and write operations can have high contention rates between each other. We believe this is the root cause of the degraded performance we see on Pyrmont, and such an issue has also been reported to bolt authors and brought up several times in the past.
This PR creates a shared flag named --bolt-initial-mmap-size which is set to a default of 512Mb
More information
BoltDB options expressly mention the following:
Supplemental reading: How databases use mmap