-
Notifications
You must be signed in to change notification settings - Fork 603
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
[CORE-8161] storage
: add min.cleanable.dirty.ratio
, schedule compaction by dirty_ratio
#24991
base: dev
Are you sure you want to change the base?
[CORE-8161] storage
: add min.cleanable.dirty.ratio
, schedule compaction by dirty_ratio
#24991
Conversation
db600d4
to
78b2928
Compare
Retry command for Build#61464please wait until all jobs are finished before running the slash command
|
CI test resultstest results on build#61464
test results on build#61480
test results on build#61769
test results on build#61775
test results on build#61791
test results on build#61800
test results on build#61803
|
78b2928
to
7a6aab3
Compare
storage
: schedule compaction by dirty_ratio
storage
: add min.cleanable.dirty.ratio
, schedule compaction by dirty_ratio
storage
: add min.cleanable.dirty.ratio
, schedule compaction by dirty_ratio
storage
: add min.cleanable.dirty.ratio
, schedule compaction by dirty_ratio
Retry command for Build#61480please wait until all jobs are finished before running the slash command
|
7a6aab3
to
8b2ac50
Compare
Force push to:
|
8b2ac50
to
0110d6c
Compare
Force push to:
|
Retry command for Build#61769please wait until all jobs are finished before running the slash command
|
0110d6c
to
e99aa91
Compare
Force push to:
|
Retry command for Build#61775please wait until all jobs are finished before running the slash command
|
Expected: Decoded: This is the only Do we have a |
e99aa91
to
1df39dd
Compare
1df39dd
to
70c37b7
Compare
Force push to:
|
These call sites were previously hardcoded to `int64_t` for the type used in a `boost::lexical_cast`. With the advent of the first `tristate<double>`, this is no longer a valid default. Use a conditional type in order to account for the possibility of a floating point tristate value conversion.
With some minor modifications in `kafka_cli_tools.py` and `types.py`.
The housekeeping loop will no longer compact every partition indiscriminately, but instead evaluate which partitions are worth compacting via a heuristic. Add a new `bitflag` to `log_housekeeping_meta::bitflags` that indicates the meta has been evaluated for compaction (but does not indicate that it has been compacted.)
70c37b7
to
1af7ac0
Compare
Based on PR #24649.
WIP, tests to be added.
Instead of unconditionally compacting all logs during a round of housekeeping, users may now optionally schedule log compaction in the
log_manager
using the cluster/topic propertymin_cleanable_dirty_ratio
/min.cleanable.dirty.ratio
.As mentioned in the above PR,
By setting the
min.cleanable.dirty.ratio
on a per topic basis, users can avoid unnecessary read/write amplification during compaction as the log grows in size.A housekeeping scan will still be performed every
log_compaction_interval_ms
, and the log'sdirty_ratio
will be tested againstmin.cleanable.dirty.ratio
in determining it's eligibility for compaction. Additionally, logs are now compacted in descending order according to their dirty ratio, offering a better "bang for buck" heuristic for compaction scheduling.Backports Required
Release Notes
Improvements
min_cleanable_dirty_ratio