From fad4c1cca4ff93fff530f00a8436baf42d316fda Mon Sep 17 00:00:00 2001 From: Sridhar Seshasayee Date: Fri, 7 Oct 2022 17:14:47 +0530 Subject: [PATCH] qa/standalone: Add/Modify tests to verify mclock recovery/backfill limits - Consolidate all mclock standalone tests under qa/standalone/misc/mclock-config.sh. - Revert existing tests in ceph-helpers.sh that verified the earlier hard override of recovery/backfill limits. - Add new tests to verify the procedure to change the recovery/backfill limits with mclock scheduler. Fixes: https://tracker.ceph.com/issues/57529 Signed-off-by: Sridhar Seshasayee (cherry picked from commit 9c72116b1cdeaa5593932135c05e00cc5d701534) --- qa/standalone/ceph-helpers.sh | 28 +------ ...ock-profile-switch.sh => mclock-config.sh} | 74 ++++++++++++++++++- 2 files changed, 75 insertions(+), 27 deletions(-) rename qa/standalone/misc/{test-mclock-profile-switch.sh => mclock-config.sh} (70%) mode change 100644 => 100755 diff --git a/qa/standalone/ceph-helpers.sh b/qa/standalone/ceph-helpers.sh index 0901815ee9b..41e92edce44 100755 --- a/qa/standalone/ceph-helpers.sh +++ b/qa/standalone/ceph-helpers.sh @@ -754,24 +754,14 @@ function test_run_osd() { echo "$backfills" | grep --quiet 'osd_max_backfills' || return 1 run_osd $dir 1 --osd-max-backfills 20 || return 1 - local scheduler=$(get_op_scheduler 1) local backfills=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path osd.1) \ config get osd_max_backfills) - if [ "$scheduler" = "mclock_scheduler" ]; then - test "$backfills" = '{"osd_max_backfills":"1000"}' || return 1 - else - test "$backfills" = '{"osd_max_backfills":"20"}' || return 1 - fi + test "$backfills" = '{"osd_max_backfills":"20"}' || return 1 CEPH_ARGS="$CEPH_ARGS --osd-max-backfills 30" run_osd $dir 2 || return 1 - local scheduler=$(get_op_scheduler 2) local backfills=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path osd.2) \ config get osd_max_backfills) - if [ "$scheduler" = "mclock_scheduler" ]; then - test "$backfills" = '{"osd_max_backfills":"1000"}' || return 1 - else - test "$backfills" = '{"osd_max_backfills":"30"}' || return 1 - fi + test "$backfills" = '{"osd_max_backfills":"30"}' || return 1 teardown $dir || return 1 } @@ -906,14 +896,9 @@ function test_activate_osd() { kill_daemons $dir TERM osd || return 1 activate_osd $dir 0 --osd-max-backfills 20 || return 1 - local scheduler=$(get_op_scheduler 0) local backfills=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path osd.0) \ config get osd_max_backfills) - if [ "$scheduler" = "mclock_scheduler" ]; then - test "$backfills" = '{"osd_max_backfills":"1000"}' || return 1 - else - test "$backfills" = '{"osd_max_backfills":"20"}' || return 1 - fi + test "$backfills" = '{"osd_max_backfills":"20"}' || return 1 teardown $dir || return 1 } @@ -936,14 +921,9 @@ function test_activate_osd_after_mark_down() { wait_for_osd down 0 || return 1 activate_osd $dir 0 --osd-max-backfills 20 || return 1 - local scheduler=$(get_op_scheduler 0) local backfills=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path osd.0) \ config get osd_max_backfills) - if [ "$scheduler" = "mclock_scheduler" ]; then - test "$backfills" = '{"osd_max_backfills":"1000"}' || return 1 - else - test "$backfills" = '{"osd_max_backfills":"20"}' || return 1 - fi + test "$backfills" = '{"osd_max_backfills":"20"}' || return 1 teardown $dir || return 1 } diff --git a/qa/standalone/misc/test-mclock-profile-switch.sh b/qa/standalone/misc/mclock-config.sh old mode 100644 new mode 100755 similarity index 70% rename from qa/standalone/misc/test-mclock-profile-switch.sh rename to qa/standalone/misc/mclock-config.sh index 1bbd6ee81c6..702c5096756 --- a/qa/standalone/misc/test-mclock-profile-switch.sh +++ b/qa/standalone/misc/mclock-config.sh @@ -25,7 +25,7 @@ function run() { export CEPH_ARGS CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none " CEPH_ARGS+="--mon-host=$CEPH_MON " - CEPH_ARGS+="--debug-bluestore 20 " + CEPH_ARGS+="--debug-mclock 20 " local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')} for func in $funcs ; do @@ -190,9 +190,77 @@ function TEST_profile_custom_to_builtin() { teardown $dir || return 1 } -main test-mclock-profile-switch "$@" +function TEST_recovery_limit_adjustment_mclock() { + local dir=$1 + + setup $dir || return 1 + run_mon $dir a || return 1 + run_mgr $dir x || return 1 + + run_osd $dir 0 --osd_op_queue=mclock_scheduler || return 1 + local recoveries=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path osd.0) \ + config get osd_recovery_max_active) + # Get default value + echo "$recoveries" | grep --quiet 'osd_recovery_max_active' || return 1 + + # Change the recovery limit without setting + # osd_mclock_override_recovery_settings option. Verify that the recovery + # limit is retained at its default value. + ceph config set osd.0 osd_recovery_max_active 10 || return 1 + sleep 2 # Allow time for change to take effect + local max_recoveries=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path osd.0) \ + config get osd_recovery_max_active) + test "$max_recoveries" = "$recoveries" || return 1 + + # Change recovery limit after setting osd_mclock_override_recovery_settings. + # Verify that the recovery limit is modified. + ceph config set osd.0 osd_mclock_override_recovery_settings true || return 1 + ceph config set osd.0 osd_recovery_max_active 10 || return 1 + sleep 2 # Allow time for change to take effect + max_recoveries=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path osd.0) \ + config get osd_recovery_max_active) + test "$max_recoveries" = '{"osd_recovery_max_active":"10"}' || return 1 + + teardown $dir || return 1 +} + +function TEST_backfill_limit_adjustment_mclock() { + local dir=$1 + + setup $dir || return 1 + run_mon $dir a || return 1 + run_mgr $dir x || return 1 + + run_osd $dir 0 --osd_op_queue=mclock_scheduler || return 1 + local backfills=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path osd.0) \ + config get osd_max_backfills) + # Get default value + echo "$backfills" | grep --quiet 'osd_max_backfills' || return 1 + + # Change the backfill limit without setting + # osd_mclock_override_recovery_settings option. Verify that the backfill + # limit is retained at its default value. + ceph config set osd.0 osd_max_backfills 20 || return 1 + sleep 2 # Allow time for change to take effect + local max_backfills=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path osd.0) \ + config get osd_max_backfills) + test "$max_backfills" = "$backfills" || return 1 + + # Change backfills limit after setting osd_mclock_override_recovery_settings. + # Verify that the backfills limit is modified. + ceph config set osd.0 osd_mclock_override_recovery_settings true || return 1 + ceph config set osd.0 osd_max_backfills 20 || return 1 + sleep 2 # Allow time for change to take effect + max_backfills=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path osd.0) \ + config get osd_max_backfills) + test "$max_backfills" = '{"osd_max_backfills":"20"}' || return 1 + + teardown $dir || return 1 +} + +main mclock-config "$@" # Local Variables: # compile-command: "cd build ; make -j4 && \ -# ../qa/run-standalone.sh test-mclock-profile-switch.sh" +# ../qa/run-standalone.sh mclock-config.sh" # End: -- 2.47.3