From: Sage Weil Date: Tue, 10 May 2016 13:51:31 +0000 (-0400) Subject: osd: instrument map cache hits and misses X-Git-Tag: v11.0.0~545^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8e05b3fa20a5fe90566f7655ae8637e74976547c;p=ceph.git osd: instrument map cache hits and misses In particular, note misses that are below the map cache lower bound, and the average distance below that lb. Signed-off-by: Sage Weil --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 13114349baf..bcfd094097f 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1326,8 +1326,20 @@ OSDMapRef OSDService::try_get_map(epoch_t epoch) OSDMapRef retval = map_cache.lookup(epoch); if (retval) { dout(30) << "get_map " << epoch << " -cached" << dendl; + if (logger) { + logger->inc(l_osd_map_cache_hit); + } return retval; } + if (logger) { + logger->inc(l_osd_map_cache_miss); + epoch_t lb = map_cache.cached_key_lower_bound(); + if (epoch < lb) { + dout(30) << "get_map " << epoch << " - miss, below lower bound" << dendl; + logger->inc(l_osd_map_cache_miss_low); + logger->inc(l_osd_map_cache_miss_low_avg, lb - epoch); + } + } OSDMap *map = new OSDMap; if (epoch > 0) { @@ -2491,6 +2503,10 @@ void OSD::create_logger() osd_plb.add_u64_counter(l_osd_mape, "map_message_epochs", "OSD map epochs"); // osdmap epochs osd_plb.add_u64_counter(l_osd_mape_dup, "map_message_epoch_dups", "OSD map duplicates"); // dup osdmap epochs osd_plb.add_u64_counter(l_osd_waiting_for_map, "messages_delayed_for_map", "Operations waiting for OSD map"); // dup osdmap epochs + osd_plb.add_u64_counter(l_osd_map_cache_hit, "osd_map_cache_hit", "osdmap cache hit"); + osd_plb.add_u64_counter(l_osd_map_cache_miss, "osd_map_cache_miss", "osdmap cache miss"); + osd_plb.add_u64_counter(l_osd_map_cache_miss_low, "osd_map_cache_miss_low", "osdmap cache miss below cache lower bound"); + osd_plb.add_u64_avg(l_osd_map_cache_miss_low_avg, "osd_map_cache_miss_low_avg", "osdmap cache miss, avg distance below cache lower bound"); osd_plb.add_u64(l_osd_stat_bytes, "stat_bytes", "OSD size"); osd_plb.add_u64(l_osd_stat_bytes_used, "stat_bytes_used", "Used space"); diff --git a/src/osd/OSD.h b/src/osd/OSD.h index fd5bb23b388..9c7994ead3e 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -125,6 +125,11 @@ enum { l_osd_waiting_for_map, + l_osd_map_cache_hit, + l_osd_map_cache_miss, + l_osd_map_cache_miss_low, + l_osd_map_cache_miss_low_avg, + l_osd_stat_bytes, l_osd_stat_bytes_used, l_osd_stat_bytes_avail,