Skip to content
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

Merged
merged 2 commits into from Apr 30, 2021

Conversation

sseshasa
Copy link
Contributor

@sseshasa sseshasa commented Apr 23, 2021

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:

  • 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.

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

  • References tracker ticket
  • Updates documentation if necessary
  • Includes tests for new functionality or reproducer for bug

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

@sseshasa
Copy link
Contributor Author

sseshasa commented Apr 26, 2021

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>
@sseshasa sseshasa force-pushed the wip-mclock-max-backfill-misc-fix branch from a2a6aff to 84fe087 Compare April 27, 2021 05:43
@sseshasa
Copy link
Contributor Author

jenkins test make check

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants