From: Sage Weil Date: Mon, 10 Mar 2014 20:52:54 +0000 (-0700) Subject: osd: set default cache_target_{dirty,full}_ratios based on configurable X-Git-Tag: v0.78~27^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fa6887b9c372a2982c6f0dc42eac36ce888ee28d;p=ceph.git osd: set default cache_target_{dirty,full}_ratios based on configurable These were hard-coded in the pg_pool_t constructor, but that was a dumb idea. Note that decoding legacy pg_pool_t's no longer does what it used to. I'm pretty sure that's okay since we care less about interim releases and because we are pulling these normally out of OSDMap, which is freshly encoded on a regular basis (and certainly recently with real values). Also, let's not forget that this field is meaningless on old pools anyway. Signed-off-by: Sage Weil --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index b254aaf43cf7..e918c3bf0f3f 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -430,6 +430,8 @@ OPTION(osd_pool_default_erasure_code_properties, OPTION(osd_pool_default_flags, OPT_INT, 0) // default flags for new pools OPTION(osd_pool_default_flag_hashpspool, OPT_BOOL, true) // use new pg hashing to prevent pool/pg overlap 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_full_ratio, OPT_FLOAT, .8) OPTION(osd_hit_set_min_size, OPT_INT, 1000) // min target size for a HitSet OPTION(osd_hit_set_namespace, OPT_STR, ".ceph-internal") // rados namespace for hit_set tracking diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 8a6715a07174..5af8e5355ccc 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -3034,6 +3034,10 @@ int OSDMonitor::prepare_new_pool(string& name, uint64_t auid, int crush_ruleset, pi->auid = auid; pi->properties = properties_map; pi->stripe_width = stripe_width; + pi->cache_target_dirty_ratio_micro = + g_conf->osd_pool_default_cache_target_dirty_ratio * 1000000; + pi->cache_target_full_ratio_micro = + g_conf->osd_pool_default_cache_target_full_ratio * 1000000; pending_inc.new_pool_names[pool] = name; return 0; } diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index f26a0da07406..9e6a8f660d0e 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -1178,13 +1178,12 @@ void pg_pool_t::decode(bufferlist::iterator& bl) ::decode(cache_min_flush_age, bl); ::decode(cache_min_evict_age, bl); } else { - pg_pool_t def; - target_max_bytes = def.target_max_bytes; - target_max_objects = def.target_max_objects; - cache_target_dirty_ratio_micro = def.cache_target_dirty_ratio_micro; - cache_target_full_ratio_micro = def.cache_target_full_ratio_micro; - cache_min_flush_age = def.cache_min_flush_age; - cache_min_evict_age = def.cache_min_evict_age; + target_max_bytes = 0; + target_max_objects = 0; + cache_target_dirty_ratio_micro = 0; + cache_target_full_ratio_micro = 0; + cache_min_flush_age = 0; + cache_min_evict_age = 0; } DECODE_FINISH(bl); diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index dcb0c2a161a1..955fb6caccdd 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -943,8 +943,8 @@ public: tier_of(-1), read_tier(-1), write_tier(-1), cache_mode(CACHEMODE_NONE), target_max_bytes(0), target_max_objects(0), - cache_target_dirty_ratio_micro(400000), - cache_target_full_ratio_micro(800000), + cache_target_dirty_ratio_micro(0), + cache_target_full_ratio_micro(0), cache_min_flush_age(0), cache_min_evict_age(0), hit_set_params(),