From: MingXin Liu Date: Thu, 21 May 2015 12:55:59 +0000 (+0800) Subject: Mon: expose commands for temperature related setting X-Git-Tag: v10.0.1~72^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9d5bb61ebea136011fa848b9faf2c5b97d25da7f;p=ceph.git Mon: expose commands for temperature related setting Signed-off-by: MingXin Liu Reviewed-by: Li Wang --- diff --git a/src/mon/MonCommands.h b/src/mon/MonCommands.h index 0286b8319dd..67936d5d346 100644 --- a/src/mon/MonCommands.h +++ b/src/mon/MonCommands.h @@ -674,11 +674,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|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|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|all|min_write_recency_for_promote|fast_read", \ + "name=var,type=CephChoices,strings=size|min_size|crash_replay_interval|pg_num|pgp_num|crush_ruleset|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|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|all|min_write_recency_for_promote|fast_read|hit_set_grade_decay_rate|hit_set_search_last_n", \ "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|write_fadvise_dontneed|noscrub|nodeep-scrub|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|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|min_write_recency_for_promote|fast_read " \ + "name=var,type=CephChoices,strings=size|min_size|crash_replay_interval|pg_num|pgp_num|crush_ruleset|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|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|min_write_recency_for_promote|fast_read|hit_set_grade_decay_rate|hit_set_search_last_n " \ "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 9ebb34960f4..6df0b84d07e 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -2885,7 +2885,8 @@ namespace { CACHE_TARGET_FULL_RATIO, CACHE_MIN_FLUSH_AGE, CACHE_MIN_EVICT_AGE, ERASURE_CODE_PROFILE, MIN_READ_RECENCY_FOR_PROMOTE, - MIN_WRITE_RECENCY_FOR_PROMOTE, FAST_READ}; + MIN_WRITE_RECENCY_FOR_PROMOTE, FAST_READ, + HIT_SET_GRADE_DECAY_RATE, HIT_SET_SEARCH_LAST_N}; std::set subtract_second_from_first(const std::set& first, @@ -3359,16 +3360,18 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) ("erasure_code_profile", ERASURE_CODE_PROFILE) ("min_read_recency_for_promote", MIN_READ_RECENCY_FOR_PROMOTE) ("min_write_recency_for_promote", MIN_WRITE_RECENCY_FOR_PROMOTE) - ("fast_read", FAST_READ); + ("fast_read", FAST_READ) + ("hit_set_grade_decay_rate", HIT_SET_GRADE_DECAY_RATE) + ("hit_set_search_last_n", HIT_SET_SEARCH_LAST_N); typedef std::set choices_set_t; 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_TARGET_DIRTY_HIGH_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) + (HIT_SET_GRADE_DECAY_RATE)(HIT_SET_SEARCH_LAST_N); const choices_set_t ONLY_ERASURE_CHOICES = boost::assign::list_of (ERASURE_CODE_PROFILE); @@ -3530,6 +3533,14 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) case FAST_READ: f->dump_int("fast_read", p->fast_read); break; + case HIT_SET_GRADE_DECAY_RATE: + f->dump_int("hit_set_grade_decay_rate", + p->hit_set_grade_decay_rate); + break; + case HIT_SET_SEARCH_LAST_N: + f->dump_int("hit_set_search_last_n", + p->hit_set_search_last_n); + break; } f->close_section(); f->flush(rdata); @@ -3620,6 +3631,14 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) ss << "min_read_recency_for_promote: " << p->min_read_recency_for_promote << "\n"; break; + case HIT_SET_GRADE_DECAY_RATE: + ss << "hit_set_grade_decay_rate: " << + p->hit_set_grade_decay_rate << "\n"; + break; + case HIT_SET_SEARCH_LAST_N: + ss << "hit_set_search_last_n: " << + p->hit_set_search_last_n << "\n"; + break; case HASHPSPOOL: case NODELETE: case NOPGCHANGE: @@ -4734,8 +4753,8 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, 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"; + var == "cache_min_flush_age" || var == "cache_min_evict_age" || + var == "hit_set_grade_decay_rate" || var == "hit_set_search_last_n")) { return -EACCES; } @@ -4921,7 +4940,6 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, } p.hit_set_period = n; } else if (var == "hit_set_count") { - if (interr.length()) { ss << "error parsing integer value '" << val << "': " << interr; return -EINVAL; @@ -5013,6 +5031,26 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, return -EINVAL; } p.min_read_recency_for_promote = n; + } else if (var == "hit_set_grade_decay_rate") { + if (interr.length()) { + ss << "error parsing integer value '" << val << "': " << interr; + return -EINVAL; + } + if (n > 100 || n < 0) { + ss << "value out of range,valid range is 0 - 100"; + return -EINVAL; + } + p.hit_set_grade_decay_rate = n; + } else if (var == "hit_set_search_last_n") { + if (interr.length()) { + ss << "error parsing integer value '" << val << "': " << interr; + return -EINVAL; + } + if (n > p.hit_set_count || n < 0) { + ss << "value out of range,valid range is 0 - hit_set_count"; + return -EINVAL; + } + p.hit_set_search_last_n = n; } else if (var == "min_write_recency_for_promote") { if (interr.length()) { ss << "error parsing integer value '" << val << "': " << interr;