From c7101426c64db6723752c55f116dcbfbaf84a668 Mon Sep 17 00:00:00 2001 From: Susant Palai Date: Wed, 22 Mar 2017 17:14:25 +0530 Subject: cluster/dht: Make rebalance throttle option tuned by number Current rebalance throttle options: lazy/normal/aggressive may not always be sufficient for the purpose of throttling. In our recent test, we observed for certain setups, normal and aggressive modes behaved similarly consuming full disk bandwidth. So in cases like this admin should be able to tune it down(or vice versa) depending on the need. Along with old throttle configurations, thread counts are tuned based on number. e.g. gluster v set vol-name cluster-rebal.throttle 5. Admin can tune up/down between 0 and the number of cores available. Note: For heterogenous servers, validation will fail on the old server if "number" is given for throttle configuration. The message looks something like this: "volume set: failed: Staging failed on vm2. Error: cluster.rebal-throttle should be {lazy|normal|aggressive}" Test: Manual test by logging active thread number after reconfiguring throttle option. testcase: tests/basic/distribute/throttle-rebal.t > Change-Id: I46e3cde546900307831028b344ecf601fd9b02c3 > BUG: 1438370 > Signed-off-by: Susant Palai > Reviewed-on: https://review.gluster.org/16980 > NetBSD-regression: NetBSD Build System > Smoke: Gluster Build System > CentOS-regression: Gluster Build System > Reviewed-by: Atin Mukherjee > Reviewed-by: Raghavendra G > Signed-off-by: Susant Palai Change-Id: I46e3cde546900307831028b344ecf601fd9b02c3 BUG: 1473136 Signed-off-by: Susant Palai Reviewed-on: https://review.gluster.org/17835 CentOS-regression: Gluster Build System Smoke: Gluster Build System Reviewed-by: Shyamsundar Ranganathan --- tests/basic/distribute/throttle-rebal.t | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'tests/basic') diff --git a/tests/basic/distribute/throttle-rebal.t b/tests/basic/distribute/throttle-rebal.t index 89495aee71b..f4823cf4f21 100644 --- a/tests/basic/distribute/throttle-rebal.t +++ b/tests/basic/distribute/throttle-rebal.t @@ -16,6 +16,11 @@ function set_throttle { $CLI volume set $V0 cluster.rebal-throttle $level 2>&1 |grep -oE 'success|failed' } +#Determine number of cores +cores=$(cat /proc/cpuinfo | grep processor | wc -l) +if [ "$cores" == "" ]; then + echo "Could not get number of cores available" +fi THROTTLE_LEVEL="lazy" EXPECT "success" set_throttle $THROTTLE_LEVEL @@ -36,6 +41,15 @@ EXPECT "failed" set_throttle $THROTTLE_LEVEL #check if throttle-level is still aggressive EXPECT "aggressive" echo `$CLI volume info | grep rebal-throttle | awk '{print $2}'` +EXPECT "success" set_throttle $cores + +#Setting thorttle number to be more than the number of cores should fail +THORTTLE_LEVEL=$((cores+1)) +TEST echo $THORTTLE_LEVEL +EXPECT "failed" set_throttle $THROTTLE_LEVEL +EXPECT "$cores" echo `$CLI volume info | grep rebal-throttle | awk '{print $2}'` + + TEST $CLI volume stop $V0; TEST $CLI volume delete $V0; -- cgit