From 3067a3b3c48c954300e5ceb1dd1ea48341e73d0a Mon Sep 17 00:00:00 2001 From: Sridhar Seshasayee Date: Mon, 18 Jan 2021 14:04:46 +0530 Subject: [PATCH] osd: Remove override for osd_async_recovery_min_cost for mclock profiles Overriding osd_async_recovery_min_cost as part of enabling a built-in mclock profile has the undesirable side effect of peers not choosing the correct async recovery targets if osds are using mixed schedulers (this could happen during upgrades or if "debug_random" is set for osd_op_queue config option). Due to the above, osds get into a "choose_acting" loop during peering. The solution is to remove the override of osd_async_recovery_min_cost. Fixes: https://tracker.ceph.com/issues/48906 Signed-off-by: Sridhar Seshasayee (cherry picked from commit 922d93f4491207411b4ee9427e49ccf08b0ef648) --- src/osd/OSD.cc | 6 +----- src/osd/scheduler/mClockScheduler.cc | 3 --- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 1444af88a3048..c53ab0a08564c 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -9917,7 +9917,6 @@ const char** OSD::get_tracked_conf_keys() const "osd_recovery_max_active", "osd_recovery_max_active_hdd", "osd_recovery_max_active_ssd", - "osd_async_recovery_min_cost", // clog & admin clog "clog_to_monitors", "clog_to_syslog", @@ -9954,13 +9953,10 @@ void OSD::handle_conf_change(const ConfigProxy& conf, changed.count("osd_recovery_sleep_hybrid") || changed.count("osd_recovery_max_active") || changed.count("osd_recovery_max_active_hdd") || - changed.count("osd_recovery_max_active_ssd") || - changed.count("osd_async_recovery_min_cost")) { + changed.count("osd_recovery_max_active_ssd")) { if (cct->_conf.get_val("osd_op_queue") == "mclock_scheduler" && cct->_conf.get_val("osd_mclock_profile") != "custom") { // Set ceph config option to meet QoS goals - // Set async_recovery_min_cost - cct->_conf.set_val("osd_async_recovery_min_cost", std::to_string(100)); // Set high value for recovery max active uint32_t recovery_max_active = 1000; if (cct->_conf->osd_recovery_max_active) { diff --git a/src/osd/scheduler/mClockScheduler.cc b/src/osd/scheduler/mClockScheduler.cc index 55a6055c61f16..d3f7b62d41396 100644 --- a/src/osd/scheduler/mClockScheduler.cc +++ b/src/osd/scheduler/mClockScheduler.cc @@ -276,9 +276,6 @@ void mClockScheduler::set_high_client_ops_profile_config() void mClockScheduler::set_global_recovery_options() { - // Set low recovery min cost - cct->_conf.set_val("osd_async_recovery_min_cost", stringify(100)); - // Set high value for recovery max active and max backfill int rec_max_active = 1000; int max_backfills = 1000; -- 2.39.5