From: Mingxin Liu Date: Thu, 28 May 2015 05:33:38 +0000 (+0800) Subject: Mon: add cache_target_dirty_high_ratio related configuration and commands X-Git-Tag: v9.0.3~134^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1fb26e39254b583a1f76bf75a76238ba39512ec7;p=ceph.git Mon: add cache_target_dirty_high_ratio related configuration and commands Signed-off-by: Mingxin Liu Reviewed-by: Li Wang Suggested-by: Nick Fisk --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index a2de55f5ddca..b259ec58f5a5 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -542,6 +542,7 @@ OPTION(osd_pool_default_flag_nopgchange, OPT_BOOL, false) // pool's pg and pgp n OPTION(osd_pool_default_flag_nosizechange, OPT_BOOL, false) // pool's size and min size can't be changed OPTION(osd_pool_default_hit_set_bloom_fpp, OPT_FLOAT, .05) OPTION(osd_pool_default_cache_target_dirty_ratio, OPT_FLOAT, .4) +OPTION(osd_pool_default_cache_target_dirty_high_ratio, OPT_FLOAT, .6) OPTION(osd_pool_default_cache_target_full_ratio, OPT_FLOAT, .8) OPTION(osd_pool_default_cache_min_flush_age, OPT_INT, 0) // seconds OPTION(osd_pool_default_cache_min_evict_age, OPT_INT, 0) // seconds diff --git a/src/mon/MonCommands.h b/src/mon/MonCommands.h index 8a36807f17f9..6b53ceb1d4ec 100644 --- a/src/mon/MonCommands.h +++ b/src/mon/MonCommands.h @@ -639,11 +639,11 @@ COMMAND("osd pool rename " \ "rename to ", "osd", "rw", "cli,rest") COMMAND("osd pool get " \ "name=pool,type=CephPoolname " \ - "name=var,type=CephChoices,strings=size|min_size|crash_replay_interval|pg_num|pgp_num|crush_ruleset|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|auid|target_max_objects|target_max_bytes|cache_target_dirty_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|erasure_code_profile|min_read_recency_for_promote|write_fadvise_dontneed|all", \ + "name=var,type=CephChoices,strings=size|min_size|crash_replay_interval|pg_num|pgp_num|crush_ruleset|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|auid|target_max_objects|target_max_bytes|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|erasure_code_profile|min_read_recency_for_promote|write_fadvise_dontneed|all", \ "get pool parameter ", "osd", "r", "cli,rest") COMMAND("osd pool set " \ "name=pool,type=CephPoolname " \ - "name=var,type=CephChoices,strings=size|min_size|crash_replay_interval|pg_num|pgp_num|crush_ruleset|hashpspool|nodelete|nopgchange|nosizechange|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|debug_fake_ec_pool|target_max_bytes|target_max_objects|cache_target_dirty_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|auid|min_read_recency_for_promote|write_fadvise_dontneed " \ + "name=var,type=CephChoices,strings=size|min_size|crash_replay_interval|pg_num|pgp_num|crush_ruleset|hashpspool|nodelete|nopgchange|nosizechange|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|debug_fake_ec_pool|target_max_bytes|target_max_objects|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|auid|min_read_recency_for_promote|write_fadvise_dontneed " \ "name=val,type=CephString " \ "name=force,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \ "set pool parameter to ", "osd", "rw", "cli,rest") diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 1e8723d9336e..b88c52c9c012 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -2800,7 +2800,8 @@ namespace { PG_NUM, PGP_NUM, CRUSH_RULESET, HIT_SET_TYPE, HIT_SET_PERIOD, HIT_SET_COUNT, HIT_SET_FPP, AUID, TARGET_MAX_OBJECTS, TARGET_MAX_BYTES, - CACHE_TARGET_DIRTY_RATIO, CACHE_TARGET_FULL_RATIO, + CACHE_TARGET_DIRTY_RATIO, CACHE_TARGET_DIRTY_HIGH_RATIO, + CACHE_TARGET_FULL_RATIO, CACHE_MIN_FLUSH_AGE, CACHE_MIN_EVICT_AGE, ERASURE_CODE_PROFILE, MIN_READ_RECENCY_FOR_PROMOTE, WRITE_FADVISE_DONTNEED}; @@ -3246,6 +3247,7 @@ bool OSDMonitor::preprocess_command(MMonCommand *m) ("auid", AUID)("target_max_objects", TARGET_MAX_OBJECTS) ("target_max_bytes", TARGET_MAX_BYTES) ("cache_target_dirty_ratio", CACHE_TARGET_DIRTY_RATIO) + ("cache_target_dirty_high_ratio", CACHE_TARGET_DIRTY_HIGH_RATIO) ("cache_target_full_ratio", CACHE_TARGET_FULL_RATIO) ("cache_min_flush_age", CACHE_MIN_FLUSH_AGE) ("cache_min_evict_age", CACHE_MIN_EVICT_AGE) @@ -3258,8 +3260,8 @@ bool OSDMonitor::preprocess_command(MMonCommand *m) const choices_set_t ONLY_TIER_CHOICES = boost::assign::list_of (HIT_SET_TYPE)(HIT_SET_PERIOD)(HIT_SET_COUNT)(HIT_SET_FPP) (TARGET_MAX_OBJECTS)(TARGET_MAX_BYTES)(CACHE_TARGET_FULL_RATIO) - (CACHE_TARGET_DIRTY_RATIO)(CACHE_MIN_FLUSH_AGE)(CACHE_MIN_EVICT_AGE) - (MIN_READ_RECENCY_FOR_PROMOTE); + (CACHE_TARGET_DIRTY_RATIO)(CACHE_TARGET_DIRTY_HIGH_RATIO)(CACHE_MIN_FLUSH_AGE) + (CACHE_MIN_EVICT_AGE)(MIN_READ_RECENCY_FOR_PROMOTE); const choices_set_t ONLY_ERASURE_CHOICES = boost::assign::list_of (ERASURE_CODE_PROFILE); @@ -3370,6 +3372,12 @@ bool OSDMonitor::preprocess_command(MMonCommand *m) f->dump_float("cache_target_dirty_ratio", ((float)p->cache_target_dirty_ratio_micro/1000000)); break; + case CACHE_TARGET_DIRTY_HIGH_RATIO: + f->dump_unsigned("cache_target_dirty_high_ratio_micro", + p->cache_target_dirty_high_ratio_micro); + f->dump_float("cache_target_dirty_high_ratio", + ((float)p->cache_target_dirty_high_ratio_micro/1000000)); + break; case CACHE_TARGET_FULL_RATIO: f->dump_unsigned("cache_target_full_ratio_micro", p->cache_target_full_ratio_micro); @@ -3459,6 +3467,10 @@ bool OSDMonitor::preprocess_command(MMonCommand *m) ss << "cache_target_dirty_ratio: " << ((float)p->cache_target_dirty_ratio_micro/1000000) << "\n"; break; + case CACHE_TARGET_DIRTY_HIGH_RATIO: + ss << "cache_target_dirty_high_ratio: " + << ((float)p->cache_target_dirty_high_ratio_micro/1000000) << "\n"; + break; case CACHE_TARGET_FULL_RATIO: ss << "cache_target_full_ratio: " << ((float)p->cache_target_full_ratio_micro/1000000) << "\n"; @@ -4341,6 +4353,8 @@ int OSDMonitor::prepare_new_pool(string& name, uint64_t auid, pi->stripe_width = stripe_width; pi->cache_target_dirty_ratio_micro = g_conf->osd_pool_default_cache_target_dirty_ratio * 1000000; + pi->cache_target_dirty_high_ratio_micro = + g_conf->osd_pool_default_cache_target_dirty_high_ratio * 1000000; pi->cache_target_full_ratio_micro = g_conf->osd_pool_default_cache_target_full_ratio * 1000000; pi->cache_min_flush_age = g_conf->osd_pool_default_cache_min_flush_age; @@ -4467,6 +4481,7 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, var == "hit_set_count" || var == "hit_set_fpp" || var == "target_max_objects" || var == "target_max_bytes" || var == "cache_target_full_ratio" || var == "cache_target_dirty_ratio" || + var == "cache_target_dirty_high_ratio" || var == "cache_min_flush_age" || var == "cache_min_evict_age")) { ss << "pool '" << poolstr << "' is not a tier pool: variable not applicable"; return -EACCES; @@ -4696,6 +4711,16 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, return -ERANGE; } p.cache_target_dirty_ratio_micro = uf; + } else if (var == "cache_target_dirty_high_ratio") { + if (floaterr.length()) { + ss << "error parsing float '" << val << "': " << floaterr; + return -EINVAL; + } + if (f < 0 || f > 1.0) { + ss << "value must be in the range 0..1"; + return -ERANGE; + } + p.cache_target_dirty_high_ratio_micro = uf; } else if (var == "cache_target_full_ratio") { if (floaterr.length()) { ss << "error parsing float '" << val << "': " << floaterr;