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: Restore defaults of mClock built-in profiles upon modification #48703
Conversation
90190c5
to
85c2d19
Compare
|
jenkins test make check |
85c2d19
to
bfb457c
Compare
|
jenkins test make check |
|
jenkins test api |
|
jenkins test make check |
|
jenkins test api |
bfb457c
to
274a643
Compare
|
jenkins test make check |
1 similar comment
|
jenkins test make check |
|
jenkins test api |
274a643
to
016c7a9
Compare
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
016c7a9
to
77b0c88
Compare
|
jenkins test make check |
|
jenkins test api |
adc9cbb
to
32cf67e
Compare
|
jenkins test make check |
32cf67e
to
200acac
Compare
200acac
to
791f03a
Compare
|
jenkins test make check |
791f03a
to
d188776
Compare
The QoS parameters (res, wgt, lim) of mClock profiles are not allowed to be modified by users using commands like "config set" or via admin socket. handle_conf_change() does not allow changes to any built-in mClock profile at the mClock scheduler. But the config subsystem showed the change as expected for the built-in mClock profile QoS parameters. This misled the user into thinking that the change was made at the mClock server when it was not the case. The above issue is the result of the config "levels" used by the config subsystem. The inital built-in QoS params are set at the CONF_DEFAULT level. This allows the user to modify the built-in QoS params using "config set" command which sets values at CONF_MON level which has higher priority than CONF_DEFAULT level. The new value is persisted on the mon store and therefore the config subsystem shows the change when "config show" command is issued. To prevent the above, this commit adds changes to restore the defaults set for the built-in profiles by removing the new config changes from the MON store. This results in the original defaults to come back into effect and maintain a consistent view of the built-in profile across all levels. To accomplish this, the mClock scheduler is provided with additional information like the OSD id, shard id and a pointer to the MonClient using which the Mon store command to remove the option is executed. A standalone test is added to verify that built-in params cannot be modified and the original profile params are retained. Fixes: https://tracker.ceph.com/issues/57533 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
d188776
to
b127806
Compare
|
Rados suite review: https://pulpito.ceph.com/?branch=wip-yuri2-testing-2023-01-26-1532 Failures, unrelated: Details: |
This is a follow-up to PR: ceph#48703. This commit also considers changes made ephemerally using either the 'daemon' or the 'tell' interfaces to override the built-in mClock QoS parameters. In such a scenario, the ephemeral changes are removed using the rm_val() method exposed by the config subsytem and logging this information. Other changes: 1. Add a standalone test to exercise the fix. 2. Add documentation note on the outcome of the attempt to modify built-in profile defaults. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
…tion This is a follow-up to PR: ceph#48703. Modify the mon caps to allow OSDs to run the "config rm" command with restriction to remove only the following config keys from the mon store: - osd_max_backfills - osd_recovery_max_active(.*) - osd_recovery_max_active and - osd_recovery_max_active_(hdd|ssd) - osd_mclock_scheduler_(.*) -> all the QoS specific config options. The above is similar to the change in mon caps to run the "config set" command as implemented in PR: ceph#42853. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
This is a follow-up to PR: ceph#48703. This commit also considers changes made ephemerally using either the 'daemon' or the 'tell' interfaces to override the built-in mClock QoS parameters. In such a scenario, the ephemeral changes are removed using the rm_val() method exposed by the config subsytem and logging this information. Other changes: 1. Add a standalone test to exercise the fix. 2. Add documentation note on the outcome of the attempt to modify built-in profile defaults. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
…tion This is a follow-up to PR: ceph#48703. Modify the mon caps to allow OSDs to run the "config rm" command with restriction to remove only the following config keys from the mon store: - osd_max_backfills - osd_recovery_max_active(.*) - osd_recovery_max_active and - osd_recovery_max_active_(hdd|ssd) - osd_mclock_scheduler_(.*) -> all the QoS specific config options. The above is similar to the change in mon caps to run the "config set" command as implemented in PR: ceph#42853. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
This is a follow-up to PR: ceph#48703. This commit also considers changes made ephemerally using either the 'daemon' or the 'tell' interfaces to override the built-in mClock QoS parameters. In such a scenario, the ephemeral changes are removed using the rm_val() method exposed by the config subsytem and logging this information. Other changes: 1. Add a standalone test to exercise the fix. 2. Add documentation note on the outcome of the attempt to modify built-in profile defaults. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
…tion This is a follow-up to PR: ceph#48703. Modify the mon caps to allow OSDs to run the "config rm" command with restriction to remove only the following config keys from the mon store: - osd_max_backfills - osd_recovery_max_active(.*) - osd_recovery_max_active and - osd_recovery_max_active_(hdd|ssd) - osd_mclock_scheduler_(.*) -> all the QoS specific config options. The above is similar to the change in mon caps to run the "config set" command as implemented in PR: ceph#42853. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com> (cherry picked from commit 6916008)
This is a follow-up to PR: ceph#48703. This commit also considers changes made ephemerally using either the 'daemon' or the 'tell' interfaces to override the built-in mClock QoS parameters. In such a scenario, the ephemeral changes are removed using the rm_val() method exposed by the config subsytem and logging this information. Other changes: 1. Add a standalone test to exercise the fix. 2. Add documentation note on the outcome of the attempt to modify built-in profile defaults. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com> (cherry picked from commit 414ac7d)
…tion This is a follow-up to PR: ceph#48703. Modify the mon caps to allow OSDs to run the "config rm" command with restriction to remove only the following config keys from the mon store: - osd_max_backfills - osd_recovery_max_active(.*) - osd_recovery_max_active and - osd_recovery_max_active_(hdd|ssd) - osd_mclock_scheduler_(.*) -> all the QoS specific config options. The above is similar to the change in mon caps to run the "config set" command as implemented in PR: ceph#42853. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com> (cherry picked from commit 6916008)
This is a follow-up to PR: ceph#48703. This commit also considers changes made ephemerally using either the 'daemon' or the 'tell' interfaces to override the built-in mClock QoS parameters. In such a scenario, the ephemeral changes are removed using the rm_val() method exposed by the config subsytem and logging this information. Other changes: 1. Add a standalone test to exercise the fix. 2. Add documentation note on the outcome of the attempt to modify built-in profile defaults. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com> (cherry picked from commit 414ac7d)
…tion This is a follow-up to PR: ceph#48703. Modify the mon caps to allow OSDs to run the "config rm" command with restriction to remove only the following config keys from the mon store: - osd_max_backfills - osd_recovery_max_active(.*) - osd_recovery_max_active and - osd_recovery_max_active_(hdd|ssd) - osd_mclock_scheduler_(.*) -> all the QoS specific config options. The above is similar to the change in mon caps to run the "config set" command as implemented in PR: ceph#42853. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
This is a follow-up to PR: ceph#48703. This commit also considers changes made ephemerally using either the 'daemon' or the 'tell' interfaces to override the built-in mClock QoS parameters. In such a scenario, the ephemeral changes are removed using the rm_val() method exposed by the config subsytem and logging this information. Other changes: 1. Add a standalone test to exercise the fix. 2. Add documentation note on the outcome of the attempt to modify built-in profile defaults. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
…tion This is a follow-up to PR: ceph#48703. Modify the mon caps to allow OSDs to run the "config rm" command with restriction to remove only the following config keys from the mon store: - osd_max_backfills - osd_recovery_max_active(.*) - osd_recovery_max_active and - osd_recovery_max_active_(hdd|ssd) - osd_mclock_scheduler_(.*) -> all the QoS specific config options. The above is similar to the change in mon caps to run the "config set" command as implemented in PR: ceph#42853. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
This is a follow-up to PR: ceph#48703. This commit also considers changes made ephemerally using either the 'daemon' or the 'tell' interfaces to override the built-in mClock QoS parameters. In such a scenario, the ephemeral changes are removed using the rm_val() method exposed by the config subsytem and logging this information. Other changes: 1. Add a standalone test to exercise the fix. 2. Add documentation note on the outcome of the attempt to modify built-in profile defaults. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
…tion This is a follow-up to PR: ceph#48703. Modify the mon caps to allow OSDs to run the "config rm" command with restriction to remove only the following config keys from the mon store: - osd_max_backfills - osd_recovery_max_active(.*) - osd_recovery_max_active and - osd_recovery_max_active_(hdd|ssd) - osd_mclock_scheduler_(.*) -> all the QoS specific config options. The above is similar to the change in mon caps to run the "config set" command as implemented in PR: ceph#42853. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
This is a follow-up to PR: ceph#48703. This commit also considers changes made ephemerally using either the 'daemon' or the 'tell' interfaces to override the built-in mClock QoS parameters. In such a scenario, the ephemeral changes are removed using the rm_val() method exposed by the config subsytem and logging this information. Other changes: 1. Add a standalone test to exercise the fix. 2. Add documentation note on the outcome of the attempt to modify built-in profile defaults. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
…tion This is a follow-up to PR: ceph#48703. Modify the mon caps to allow OSDs to run the "config rm" command with restriction to remove only the following config keys from the mon store: - osd_max_backfills - osd_recovery_max_active(.*) - osd_recovery_max_active and - osd_recovery_max_active_(hdd|ssd) - osd_mclock_scheduler_(.*) -> all the QoS specific config options. The above is similar to the change in mon caps to run the "config set" command as implemented in PR: ceph#42853. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com> (cherry picked from commit 6916008) (cherry picked from commit 431e3ed) Resolves: rhbz#2124137
This is a follow-up to PR: ceph#48703. This commit also considers changes made ephemerally using either the 'daemon' or the 'tell' interfaces to override the built-in mClock QoS parameters. In such a scenario, the ephemeral changes are removed using the rm_val() method exposed by the config subsytem and logging this information. Other changes: 1. Add a standalone test to exercise the fix. 2. Add documentation note on the outcome of the attempt to modify built-in profile defaults. Fixes: https://tracker.ceph.com/issues/61155 Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com> (cherry picked from commit 414ac7d) (cherry picked from commit 41c903a) Resolves: rhbz#2124137
The QoS parameters (res, wgt, lim) of mClock profiles are not allowed to be modified by users using commands like "config set" or via admin socket. handle_conf_change() does not allow changes to any built-in mClock profile at the mClock scheduler. But the config subsystem showed the change as expected for the built-in mClock profile QoS parameters. This misled the user into thinking that the change was made at the mClock server when it was not the case.
The above issue is the result of the config "levels" used by the config subsystem. The inital built-in QoS params are set at the CONF_DEFAULT level. This allows the user to modify the built-in QoS params using "config set" command which sets values at CONF_MON level which has higher priority than CONF_DEFAULT level. The new value is persisted on the mon store and therefore the config subsystem shows the change when "config show" command is issued.
To prevent the above, this commit adds changes to restore the defaults set for the built-in profiles by removing the new config changes from the MON store. This results in the original defaults to come back into effect and maintain a consistent view of the built-in profile across all levels.
To accomplish this, the mClock scheduler is provided with additional information like the OSD id, shard id and a pointer to the MonClient using which the Mon store command to remove the option is executed.
Fixes: https://tracker.ceph.com/issues/57533
Signed-off-by: Sridhar Seshasayee sseshasa@redhat.com
Contribution Guidelines
To sign and title your commits, please refer to Submitting Patches to Ceph.
If you are submitting a fix for a stable branch (e.g. "pacific"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
Checklist
Show available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test dashboard cephadmjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume toxjenkins test windows