From: Zhiqiang Wang Date: Thu, 18 Dec 2014 08:02:08 +0000 (+0800) Subject: mon: add osd pool set/get for min_write_recency_for_promote X-Git-Tag: v9.1.0~345^2~22 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=257c851ec31a6aa4c29f03e967c8d731699633f1;p=ceph.git mon: add osd pool set/get for min_write_recency_for_promote Signed-off-by: Zhiqiang Wang Conflicts: src/mon/MonCommands.h src/mon/OSDMonitor.cc --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index b21f69a788ba..51ec30468774 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -579,6 +579,7 @@ OPTION(osd_tier_default_cache_hit_set_count, OPT_INT, 4) OPTION(osd_tier_default_cache_hit_set_period, OPT_INT, 1200) OPTION(osd_tier_default_cache_hit_set_type, OPT_STR, "bloom") OPTION(osd_tier_default_cache_min_read_recency_for_promote, OPT_INT, 1) // number of recent HitSets the object must appear in to be promoted (on read) +OPTION(osd_tier_default_cache_min_write_recency_for_promote, OPT_INT, 1) // number of recent HitSets the object must appear in to be promoted (on write) OPTION(osd_map_dedup, OPT_BOOL, true) OPTION(osd_map_max_advance, OPT_INT, 200) // make this < cache_size! diff --git a/src/mon/MonCommands.h b/src/mon/MonCommands.h index e4da778cbd35..dea9e4ba7c99 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|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", \ + "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|min_write_recency_for_promote", \ "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_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=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|min_write_recency_for_promote " \ "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 756ff0dd0771..d8365f5fa953 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -2855,7 +2855,7 @@ namespace { CACHE_TARGET_FULL_RATIO, CACHE_MIN_FLUSH_AGE, CACHE_MIN_EVICT_AGE, ERASURE_CODE_PROFILE, MIN_READ_RECENCY_FOR_PROMOTE, - WRITE_FADVISE_DONTNEED}; + WRITE_FADVISE_DONTNEED, MIN_WRITE_RECENCY_FOR_PROMOTE}; std::set subtract_second_from_first(const std::set& first, @@ -3306,7 +3306,8 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) ("cache_min_evict_age", CACHE_MIN_EVICT_AGE) ("erasure_code_profile", ERASURE_CODE_PROFILE) ("min_read_recency_for_promote", MIN_READ_RECENCY_FOR_PROMOTE) - ("write_fadvise_dontneed", WRITE_FADVISE_DONTNEED); + ("write_fadvise_dontneed", WRITE_FADVISE_DONTNEED) + ("min_write_recency_for_promote", MIN_WRITE_RECENCY_FOR_PROMOTE); typedef std::set choices_set_t; @@ -3455,6 +3456,10 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) p->has_flag(pg_pool_t::FLAG_WRITE_FADVISE_DONTNEED) ? "true" : "false"); break; + case MIN_WRITE_RECENCY_FOR_PROMOTE: + f->dump_int("min_write_recency_for_promote", + p->min_write_recency_for_promote); + break; } f->close_section(); f->flush(rdata); @@ -3546,6 +3551,10 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) (p->has_flag(pg_pool_t::FLAG_WRITE_FADVISE_DONTNEED) ? "true" : "false") << "\n"; break; + case MIN_WRITE_RECENCY_FOR_PROMOTE: + ss << "min_write_recency_for_promote: " << + p->min_write_recency_for_promote << "\n"; + break; } rdata.append(ss.str()); ss.str(""); @@ -4873,6 +4882,12 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, ss << "expecting value 'true', 'false', '0', or '1'"; return -EINVAL; } + } else if (var == "min_write_recency_for_promote") { + if (interr.length()) { + ss << "error parsing integer value '" << val << "': " << interr; + return -EINVAL; + } + p.min_write_recency_for_promote = n; } else { ss << "unrecognized variable '" << var << "'"; return -EINVAL; @@ -6990,6 +7005,7 @@ done: ntp->hit_set_count = g_conf->osd_tier_default_cache_hit_set_count; ntp->hit_set_period = g_conf->osd_tier_default_cache_hit_set_period; ntp->min_read_recency_for_promote = g_conf->osd_tier_default_cache_min_read_recency_for_promote; + ntp->min_write_recency_for_promote = g_conf->osd_tier_default_cache_min_write_recency_for_promote; ntp->hit_set_params = hsp; ntp->target_max_bytes = size; ss << "pool '" << tierpoolstr << "' is now (or already was) a cache tier of '" << poolstr << "'";