-
Notifications
You must be signed in to change notification settings - Fork 94
[Bifrost] Introduce read batch limit in configuration #3392
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
Conversation
e654a14
to
5517b90
Compare
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! I left one comment below.
This will not be part of v1.4.0 until we test it under various load conditions to tune the default values. |
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.
Thanks for exposing this config option @AhmedSoliman. Curious to learn what's the impact of different read batch sizes on throughput/latency and overall memory consumption. LGTM. +1 for merging :-)
The new configuration option `bifrost.replicated-loglet.read-batch-size` will set (in bytes) the budget for every read batch request bifrost client will make to a log-server. The log-server will send at-least a single record even if it exceeds this budget. The option is set by default to 32KiB. Additionally: - Default value of `bifrost.replicated-loglet.readahead-records` is reduced from 100 to 20 to reduce the potential memory ballooning during backfilling. As consequence, backfills will be slower. Note: this doesn't address all potential memory ballooning issues, there is still a risk of ballooning during massive backfills depending on how many readers and how many loglets are being backfilled at the same time. The risk of ballooning is increased on the log-server side due to the concurrent number of read requests. ``` // intentionally empty ```
The new configuration option
bifrost.replicated-loglet.read-batch-size
will set (in bytes) the budget for every read batch request bifrost client will make to a log-server. The log-server will send at-least a single record even if it exceeds this budget.The option is set by default to 32KiB.
Additionally:
bifrost.replicated-loglet.readahead-records
is reduced from 100 to 20 to reduce the potential memory ballooning during backfilling. As consequence, backfills will be slower.Note: this doesn't address all potential memory ballooning issues, there is still a risk of ballooning during massive backfills depending on how many readers and how many loglets are being backfilled at the same time. The risk of ballooning is increased on the log-server side due to the concurrent number of read requests.