From a84a2d91243ad951c2b5beaa0c7b4955206650f8 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Fri, 3 Aug 2018 18:43:41 +0800 Subject: [PATCH] mds: fix premature stop of MDBalancer::try_rebalance() When mds wants to export loads to multiple targets. The amount of single export can easily be less than (0.2 * target_loads). For example: 6 active mds, mds.0's load is 11, other ranks' loads are 5. target_load is 6. Export amount for each target is 1. Fixes: http://tracker.ceph.com/issues/26973 Signed-off-by: "Yan, Zheng" (cherry picked from commit e68cbec6a647f0252d848620ce6e51b4f3eea1e3) --- src/mds/MDBalancer.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mds/MDBalancer.cc b/src/mds/MDBalancer.cc index 9cfc539aa1c8..c3d56bff9d3d 100644 --- a/src/mds/MDBalancer.cc +++ b/src/mds/MDBalancer.cc @@ -874,10 +874,10 @@ void MDBalancer::try_rebalance(balance_state_t& state) mds_rank_t target = it.first; double amount = it.second; - if (amount / target_load < .2) - continue; if (amount < MIN_OFFLOAD) continue; + if (amount * 10 * state.targets.size() < target_load) + continue; dout(5) << "want to send " << amount << " to mds." << target //<< " .. " << (*it).second << " * " << load_fac -- 2.47.3