]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/options/osd.yaml.in: change mclock profile default to balanced
authorSamuel Just <sjust@redhat.com>
Tue, 11 Apr 2023 15:15:38 +0000 (08:15 -0700)
committerSridhar Seshasayee <sseshasa@redhat.com>
Mon, 8 May 2023 10:52:00 +0000 (16:22 +0530)
Let's use the middle profile as the default.
Modify the standalone tests accordingly.

Signed-off-by: Samuel Just <sjust@redhat.com>
Signed-off-by: Sridhar Seshasayee <sseshasa@redhat.com>
qa/standalone/misc/mclock-config.sh
src/common/options/osd.yaml.in

index 6ba26af477b12cc5f0fd358a34ec16aea32e12f5..bc5473114a95959c9532b18c11ad54c9f7ce9f63 100755 (executable)
@@ -37,122 +37,113 @@ function run() {
 
 function TEST_profile_builtin_to_custom() {
     local dir=$1
-    local OSDS=1
 
-    setup $dir || return 1
-    run_mon $dir a --osd_pool_default_size=$OSDS || return 1
+    run_mon $dir a || return 1
     run_mgr $dir x || return 1
-    for osd in $(seq 0 $(expr $OSDS - 1))
-    do
-      run_osd $dir $osd --osd_op_queue=mclock_scheduler || return 1
-    done
+    run_osd $dir 0 --osd_op_queue=mclock_scheduler || return 1
 
-    # Verify that the default mclock profile is set on the OSDs
-    for id in $(seq 0 $(expr $OSDS - 1))
-    do
-      local mclock_profile=$(ceph config get osd.$id osd_mclock_profile)
-      test "$mclock_profile" = "high_client_ops" || return 1
-    done
+    # Verify the default mclock profile on the OSD
+    local mclock_profile=$(ceph config get osd.0 osd_mclock_profile)
+    test "$mclock_profile" = "balanced" || return 1
+
+    # Verify the running mClock profile
+    mclock_profile=$(CEPH_ARGS='' ceph --format=json daemon \
+      $(get_asok_path osd.0) config get osd_mclock_profile |\
+      jq .osd_mclock_profile)
+    mclock_profile=$(eval echo $mclock_profile)
+    test "$mclock_profile" = "high_recovery_ops" || return 1
 
     # Change the mclock profile to 'custom'
-    ceph config set osd osd_mclock_profile custom || return 1
+    ceph tell osd.0 config set osd_mclock_profile custom || return 1
 
     # Verify that the mclock profile is set to 'custom' on the OSDs
-    for id in $(seq 0 $(expr $OSDS - 1))
-    do
-      local mclock_profile=$(ceph config get osd.$id osd_mclock_profile)
-      test "$mclock_profile" = "custom" || return 1
-    done
+    mclock_profile=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+      osd.0) config get osd_mclock_profile | jq .osd_mclock_profile)
+    mclock_profile=$(eval echo $mclock_profile)
+    test "$mclock_profile" = "custom" || return 1
 
     # Change a mclock config param and confirm the change
     local client_res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
-      osd.$id) config get osd_mclock_scheduler_client_res | \
+      osd.0) config get osd_mclock_scheduler_client_res | \
       jq .osd_mclock_scheduler_client_res | bc)
     echo "client_res = $client_res"
     local client_res_new=$(echo "$client_res + 0.1" | bc -l)
     echo "client_res_new = $client_res_new"
-    ceph config set osd osd_mclock_scheduler_client_res \
+    ceph config set osd.0 osd_mclock_scheduler_client_res \
       $client_res_new || return 1
-    for id in $(seq 0 $(expr $OSDS - 1))
-    do
-      # Check value in config monitor db
-      local res=$(ceph config get osd.$id \
-        osd_mclock_scheduler_client_res) || return 1
-      if (( $(echo "$res != $client_res_new" | bc -l) )); then
-        return 1
-      fi
-      # Check value in the in-memory 'values' map
-      res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
-        osd.$id) config get osd_mclock_scheduler_client_res | \
-        jq .osd_mclock_scheduler_client_res | bc)
-      if (( $(echo "$res != $client_res_new" | bc -l) )); then
-        return 1
-      fi
-    done
+
+    # Check value in config monitor db
+    local res=$(ceph config get osd.0 \
+      osd_mclock_scheduler_client_res) || return 1
+    if (( $(echo "$res != $client_res_new" | bc -l) )); then
+      return 1
+    fi
+    # Check value in the in-memory 'values' map
+    res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+      osd.0) config get osd_mclock_scheduler_client_res | \
+      jq .osd_mclock_scheduler_client_res | bc)
+    if (( $(echo "$res != $client_res_new" | bc -l) )); then
+      return 1
+    fi
 
     teardown $dir || return 1
 }
 
 function TEST_profile_custom_to_builtin() {
     local dir=$1
-    local OSDS=1
 
     setup $dir || return 1
-    run_mon $dir a --osd_pool_default_size=$OSDS || return 1
+    run_mon $dir a || return 1
     run_mgr $dir x || return 1
-    for osd in $(seq 0 $(expr $OSDS - 1))
-    do
-      run_osd $dir $osd --osd_op_queue=mclock_scheduler || return 1
-    done
+    run_osd $dir 0 --osd_op_queue=mclock_scheduler || return 1
 
-    # Verify that the default mclock profile is set on the OSDs
-    for id in $(seq 0 $(expr $OSDS - 1))
-    do
-      local mclock_profile=$(ceph config get osd.$id osd_mclock_profile)
-      test "$mclock_profile" = "high_client_ops" || return 1
-    done
+    # Verify the default mclock profile on the OSD
+    local def_mclock_profile
+    def_mclock_profile=$(ceph config get osd.0 osd_mclock_profile)
+    test "$def_mclock_profile" = "balanced" || return 1
+
+    # Verify the running mClock profile
+    local orig_mclock_profile=$(CEPH_ARGS='' ceph --format=json daemon \
+      $(get_asok_path osd.0) config get osd_mclock_profile |\
+      jq .osd_mclock_profile)
+    orig_mclock_profile=$(eval echo $orig_mclock_profile)
+    test $orig_mclock_profile = "high_recovery_ops" || return 1
 
     # Change the mclock profile to 'custom'
-    ceph config set osd osd_mclock_profile custom || return 1
+    ceph tell osd.0 config set osd_mclock_profile custom || return 1
 
     # Verify that the mclock profile is set to 'custom' on the OSDs
-    for id in $(seq 0 $(expr $OSDS - 1))
-    do
-      local mclock_profile=$(ceph config get osd.$id osd_mclock_profile)
-      test "$mclock_profile" = "custom" || return 1
-    done
+    local mclock_profile=$(CEPH_ARGS='' ceph --format=json daemon \
+      $(get_asok_path osd.0) config get osd_mclock_profile | \
+      jq .osd_mclock_profile)
+    mclock_profile=$(eval echo $mclock_profile)
+    test $mclock_profile = "custom" || return 1
 
     # Save the original client reservations allocated to the OSDs
-    local client_res=()
-    for id in $(seq 0 $(expr $OSDS - 1))
-    do
-      client_res+=( $(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
-        osd.$id) config get osd_mclock_scheduler_client_res | \
-        jq .osd_mclock_scheduler_client_res | bc) )
-      echo "Original client_res for osd.$id = ${client_res[$id]}"
-    done
+    local client_res
+    client_res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+      osd.0) config get osd_mclock_scheduler_client_res | \
+      jq .osd_mclock_scheduler_client_res | bc)
+    echo "Original client_res for osd.0 = $client_res"
 
     # Change a mclock config param and confirm the change
-    local client_res_new=$(echo "${client_res[0]} + 0.1" | bc -l)
+    local client_res_new=$(echo "$client_res + 0.1" | bc -l)
     echo "client_res_new = $client_res_new"
     ceph config set osd osd_mclock_scheduler_client_res \
       $client_res_new || return 1
-    for id in $(seq 0 $(expr $OSDS - 1))
-    do
-      # Check value in config monitor db
-      local res=$(ceph config get osd.$id \
-        osd_mclock_scheduler_client_res) || return 1
-      if (( $(echo "$res != $client_res_new" | bc -l) )); then
-        return 1
-      fi
-      # Check value in the in-memory 'values' map
-      res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
-        osd.$id) config get osd_mclock_scheduler_client_res | \
-        jq .osd_mclock_scheduler_client_res | bc)
-      if (( $(echo "$res != $client_res_new" | bc -l) )); then
-        return 1
-      fi
-    done
+    # Check value in config monitor db
+    local res=$(ceph config get osd.0 \
+      osd_mclock_scheduler_client_res) || return 1
+    if (( $(echo "$res != $client_res_new" | bc -l) )); then
+      return 1
+    fi
+    # Check value in the in-memory 'values' map
+    res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+      osd.0) config get osd_mclock_scheduler_client_res | \
+      jq .osd_mclock_scheduler_client_res | bc)
+    if (( $(echo "$res != $client_res_new" | bc -l) )); then
+      return 1
+    fi
 
     # Switch the mclock profile back to the original built-in profile.
     # The config subsystem prevents the overwrite of the changed QoS config
@@ -160,46 +151,49 @@ function TEST_profile_custom_to_builtin() {
     # before proceeding to remove the entry from the config monitor db. After
     # the config entry is removed, the original value for the config option is
     # restored and is verified.
-    ceph config set osd osd_mclock_profile high_client_ops || return 1
-    # Verify that the mclock profile is set to 'high_client_ops' on the OSDs
-    for id in $(seq 0 $(expr $OSDS - 1))
-    do
-      local mclock_profile=$(ceph config get osd.$id osd_mclock_profile)
-      test "$mclock_profile" = "high_client_ops" || return 1
-    done
+    ceph tell osd.0 config set osd_mclock_profile $orig_mclock_profile || return 1
+    # Verify that the mclock profile is set back to the original on the OSD
+    eval mclock_profile=$(CEPH_ARGS='' ceph --format=json daemon \
+      $(get_asok_path osd.0) config get osd_mclock_profile | \
+      jq .osd_mclock_profile)
+    #mclock_profile=$(ceph config get osd.0 osd_mclock_profile)
+    test "$mclock_profile" = "$orig_mclock_profile" || return 1
 
     # Verify that the new value is still in effect
-    for id in $(seq 0 $(expr $OSDS - 1))
-    do
-      # Check value in config monitor db
-      local res=$(ceph config get osd.$id \
-        osd_mclock_scheduler_client_res) || return 1
-      if (( $(echo "$res != $client_res_new" | bc -l) )); then
-        return 1
-      fi
-      # Check value in the in-memory 'values' map
-      res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
-        osd.$id) config get osd_mclock_scheduler_client_res | \
-        jq .osd_mclock_scheduler_client_res | bc)
-      if (( $(echo "$res != $client_res_new" | bc -l) )); then
-        return 1
-      fi
-    done
+    # Check value in config monitor db
+    local res=$(ceph config get osd.0 \
+      osd_mclock_scheduler_client_res) || return 1
+    if (( $(echo "$res != $client_res_new" | bc -l) )); then
+      return 1
+    fi
+    # Check value in the in-memory 'values' map
+    res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+      osd.0) config get osd_mclock_scheduler_client_res | \
+      jq .osd_mclock_scheduler_client_res | bc)
+    if (( $(echo "$res != $client_res_new" | bc -l) )); then
+      return 1
+    fi
 
     # Remove the changed QoS config option from monitor db
     ceph config rm osd osd_mclock_scheduler_client_res || return 1
 
+    sleep 5 # Allow time for change to take effect
+
     # Verify that the original values are now restored
-    for id in $(seq 0 $(expr $OSDS - 1))
-    do
-      # Check value in the in-memory 'values' map
-      res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
-        osd.$id) config get osd_mclock_scheduler_client_res | \
-        jq .osd_mclock_scheduler_client_res | bc)
-      if (( $(echo "$res != ${client_res[$id]}" | bc -l) )); then
-        return 1
-      fi
-    done
+    # Check value in config monitor db
+    res=$(ceph config get osd.0 \
+      osd_mclock_scheduler_client_res) || return 1
+    if (( $(echo "$res != 0.0" | bc -l) )); then
+      return 1
+    fi
+
+    # Check value in the in-memory 'values' map
+    res=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path \
+      osd.0) config get osd_mclock_scheduler_client_res | \
+      jq .osd_mclock_scheduler_client_res | bc)
+    if (( $(echo "$res != $client_res" | bc -l) )); then
+      return 1
+    fi
 
     teardown $dir || return 1
 }
@@ -317,8 +311,15 @@ function TEST_profile_disallow_builtin_params_modify() {
     run_osd $dir 0 --osd_op_queue=mclock_scheduler || return 1
 
     # Verify that the default mclock profile is set on the OSD
-    local mclock_profile=$(ceph config get osd.0 osd_mclock_profile)
-    test "$mclock_profile" = "high_client_ops" || return 1
+    local def_mclock_profile=$(ceph config get osd.0 osd_mclock_profile)
+    test "$def_mclock_profile" = "balanced" || return 1
+
+    # Verify the running mClock profile
+    local cur_mclock_profile=$(CEPH_ARGS='' ceph --format=json daemon \
+      $(get_asok_path osd.0) config get osd_mclock_profile |\
+      jq .osd_mclock_profile)
+    cur_mclock_profile=$(eval echo $cur_mclock_profile)
+    test $cur_mclock_profile = "high_recovery_ops" || return 1
 
     declare -a options=("osd_mclock_scheduler_background_recovery_res"
       "osd_mclock_scheduler_client_res")
index c3716d42b010a5415ea0ce3877100b15dc478163..c14563f44ad470f3e24ac3b5dc51ee9a90f057c8 100644 (file)
@@ -1172,7 +1172,7 @@ options:
     parameters [*reservation, weight, limit*] and some Ceph
     configuration parameters are set transparently. Note that the
     above does not apply for the *custom* profile.
-  default: high_client_ops
+  default: balanced
   see_also:
   - osd_op_queue
   enum_values: