Increase local breaker reserve memory #133770
Merged
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.
Currently, we use a local breaker that over-reserves memory for each driver to reduce frequent calls to the global circuit breaker, which can be expensive. After reviewing some profiles, the maximum reserved amount appears too small and does not significantly reduce calls to the global breaker.
The reserved amount should cover at least several pages of data (~256KB by default). This change proposes increasing the maximum reserved to two pages (512KB). One downside is that we may hit the circuit breaker earlier under extremely tight memory conditions, but the impact should be minimal. For example, on a node with 8 CPUs, the total reserved could be 12 * 0.5 = 6MB. In cases with many long-running queries that frequently wake and sleep, the extra over-reserved memory may be more noticeable. However, even with 100 drivers, the total maximum would be only 50MB.