diff --git a/mon/mon.js b/mon/mon.js index a7ed66a6..56e6a573 100644 --- a/mon/mon.js +++ b/mon/mon.js @@ -113,10 +113,10 @@ const etcd_tree = { client_queue_depth: 128, // unused recovery_queue_depth: 1, recovery_sleep_us: 0, - recovery_tune_min_util: 0.1, - recovery_tune_min_client_util: 0, - recovery_tune_max_util: 1.0, - recovery_tune_max_client_util: 0.5, + recovery_tune_util_low: 0.1, + recovery_tune_client_util_low: 0, + recovery_tune_util_high: 1.0, + recovery_tune_client_util_high: 0.5, recovery_tune_interval: 1, recovery_tune_agg_interval: 10, // 10 times recovery_tune_interval recovery_tune_sleep_min_us: 10, // 10 microseconds diff --git a/src/osd.cpp b/src/osd.cpp index 4593af7d..645188ed 100644 --- a/src/osd.cpp +++ b/src/osd.cpp @@ -209,14 +209,14 @@ void osd_t::parse_config(bool init) if (recovery_queue_depth < 1 || recovery_queue_depth > MAX_RECOVERY_QUEUE) recovery_queue_depth = DEFAULT_RECOVERY_QUEUE; recovery_sleep_us = config["recovery_sleep_us"].uint64_value(); - recovery_tune_min_util = config["recovery_tune_min_util"].is_null() - ? 0.1 : config["recovery_tune_min_util"].number_value(); - recovery_tune_max_util = config["recovery_tune_max_util"].is_null() - ? 1.0 : config["recovery_tune_max_util"].number_value(); - recovery_tune_min_client_util = config["recovery_tune_min_client_util"].is_null() - ? 0 : config["recovery_tune_min_client_util"].number_value(); - recovery_tune_max_client_util = config["recovery_tune_max_client_util"].is_null() - ? 0.5 : config["recovery_tune_max_client_util"].number_value(); + recovery_tune_util_low = config["recovery_tune_util_low"].is_null() + ? 0.1 : config["recovery_tune_util_low"].number_value(); + recovery_tune_util_high = config["recovery_tune_util_high"].is_null() + ? 1.0 : config["recovery_tune_util_high"].number_value(); + recovery_tune_client_util_low = config["recovery_tune_client_util_low"].is_null() + ? 0 : config["recovery_tune_client_util_low"].number_value(); + recovery_tune_client_util_high = config["recovery_tune_client_util_high"].is_null() + ? 0.5 : config["recovery_tune_client_util_high"].number_value(); auto old_recovery_tune_interval = recovery_tune_interval; recovery_tune_interval = config["recovery_tune_interval"].is_null() ? 1 : config["recovery_tune_interval"].uint64_value(); diff --git a/src/osd.h b/src/osd.h index dce93d5b..49f27c15 100644 --- a/src/osd.h +++ b/src/osd.h @@ -118,10 +118,10 @@ class osd_t int autosync_writes = DEFAULT_AUTOSYNC_WRITES; uint64_t recovery_queue_depth = 1; uint64_t recovery_sleep_us = 0; - double recovery_tune_min_util = 0.1; - double recovery_tune_min_client_util = 0; - double recovery_tune_max_util = 1.0; - double recovery_tune_max_client_util = 0.5; + double recovery_tune_util_low = 0.1; + double recovery_tune_client_util_low = 0; + double recovery_tune_util_high = 1.0; + double recovery_tune_client_util_high = 0.5; int recovery_tune_interval = 1; int recovery_tune_agg_interval = 10; int recovery_tune_sleep_min_us = 10; diff --git a/src/osd_flush.cpp b/src/osd_flush.cpp index bbac2d49..2401948d 100644 --- a/src/osd_flush.cpp +++ b/src/osd_flush.cpp @@ -412,11 +412,11 @@ void osd_t::tune_recovery() // = 0.0625 // recovery utilisation will be 1 rtune_client_util = total_client_usec/1000000.0/recovery_tune_interval; - rtune_target_util = (rtune_client_util < recovery_tune_min_client_util - ? recovery_tune_max_util - : recovery_tune_min_util + (rtune_client_util >= recovery_tune_max_client_util - ? 0 : (recovery_tune_max_util-recovery_tune_min_util)* - (recovery_tune_max_client_util-rtune_client_util)/(recovery_tune_max_client_util-recovery_tune_min_client_util) + rtune_target_util = (rtune_client_util < recovery_tune_client_util_low + ? recovery_tune_util_high + : recovery_tune_util_low + (rtune_client_util >= recovery_tune_client_util_high + ? 0 : (recovery_tune_util_high-recovery_tune_util_low)* + (recovery_tune_client_util_high-rtune_client_util)/(recovery_tune_client_util_high-recovery_tune_client_util_low) ) ); rtune_avg_lat = total_recovery_usec/recovery_count; diff --git a/tests/run_3osds.sh b/tests/run_3osds.sh index e6afb7dc..5d54676e 100644 --- a/tests/run_3osds.sh +++ b/tests/run_3osds.sh @@ -19,10 +19,10 @@ fi if [ "$IMMEDIATE_COMMIT" != "" ]; then NO_SAME="--journal_no_same_sector_overwrites true --journal_sector_buffer_count 1024 --disable_data_fsync 1 --immediate_commit all --log_level 10 --etcd_stats_interval 5" - $ETCDCTL put /vitastor/config/global '{"recovery_queue_depth":1,"recovery_tune_min_util":1,"osd_out_time":1,"immediate_commit":"all","client_enable_writeback":true}' + $ETCDCTL put /vitastor/config/global '{"recovery_queue_depth":1,"recovery_tune_util_low":1,"osd_out_time":1,"immediate_commit":"all","client_enable_writeback":true}' else NO_SAME="--journal_sector_buffer_count 1024 --log_level 10 --etcd_stats_interval 5" - $ETCDCTL put /vitastor/config/global '{"recovery_queue_depth":1,"recovery_tune_min_util":1,"osd_out_time":1,"client_enable_writeback":true}' + $ETCDCTL put /vitastor/config/global '{"recovery_queue_depth":1,"recovery_tune_util_low":1,"osd_out_time":1,"client_enable_writeback":true}' fi start_osd_on()