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
osd: Override recovery, backfill and sleep related config options during OSD and mclock scheduler initialization. #41004
osd: Override recovery, backfill and sleep related config options during OSD and mclock scheduler initialization. #41004
Conversation
2891530
to
0858264
Compare
0858264
to
a2a6aff
Compare
Pulpito rados suite (with osd_op_queue = debug_random): Pulpito rados suite (with osd_op_queue = mclock_scheduler): |
Make the osd_*_sleep options modifiable during runtime and add them to the set of tracked conf keys. This is to ensure that the sleep options can be disabled/overridden during OSD bring-up if mclock scheduler is employed. Introduce OSD::maybe_override_options_for_qos(): This method does the following if the mclock scheduler is enabled: - overrides the "recovery_max_active" to a high limit of 1000, - overrides "osd_max_backfills" option to a high limit of 1000 and sets the corresponding Async local and remote reserver objects also to the same value (1000), - disables osd_*_sleep options so that appropriate QoS may be provided with the mclock scheduler. The above method is called in the following scenarios: - After all the op shards are brought up during OSD initialization. - In OSD::handle_conf_change() to override any settings related to QoS that the user intended to change. Modify the mclock config reference to accurately reflect what options can be changed when using mclock's "custom" profile and clean up some whitespaces. Fixes: https://tracker.ceph.com/issues/50501 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
Add the missing tracked mclock config options related to the background best effort clients of mclock scheduler within handle_conf_change(). The method mClockScheduler::set_global_recovery_options() doesn't serve the purpose fully as in addition to overriding the "osd_max_backfills" config option, the local and remote Async reserver objects have to be updated accordingly which is not possible currently from within the mClockScheduler. Therefore, rather than complicate the mClockScheduler code to achieve this, a better option is to override the recovery options during OSD init (and handle config changes) which the previous commit introduced. Therefore, this method is removed. Fixes: https://tracker.ceph.com/issues/50501 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
a2a6aff
to
84fe087
Compare
jenkins test make check |
The change fixes a bug where the new value for "osd_max_backfills" was
not being updated within the local and remote Async reserver objects as
part of OSD and mClockScheduler initialization.
The commits implement the following:
Make the osd_*_sleep options modifiable during runtime and add them
to the set of tracked conf keys. This is to ensure that the sleep
options can be disabled/overridden during OSD bring-up if mclock
scheduler is employed.
Introduce OSD::maybe_override_options_for_qos():
This method does the following if the mclock scheduler is enabled:
sets the corresponding Async local and remote reserver objects also
to the same value (1000),
provided with the mclock scheduler.
The above method is called in the following scenarios:
QoS that the user intended to change.
Also, add the missing tracked mclock config options related to the
background best effort clients of mclock scheduler within
mClockScheduler::handle_conf_change().
Modify the mclock config reference to accurately reflect what options
can be changed when using mclock's "custom" profile and clean up
some whitespaces.
Fixes: https://tracker.ceph.com/issues/50501
Signed-off-by: Sridhar Seshasayee sseshasa@redhat.com
Checklist
Show available Jenkins commands
jenkins retest this please
jenkins test classic perf
jenkins test crimson perf
jenkins test signed
jenkins test make check
jenkins test make check arm64
jenkins test submodules
jenkins test dashboard
jenkins test api
jenkins test docs
jenkins render docs
jenkins test ceph-volume all
jenkins test ceph-volume tox