From 73985a5b106eb21b757a329e6f304ae31f5809d3 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 25 May 2017 15:41:04 -0400 Subject: [PATCH] osd: instrument osdmap bl cache hits and misses Add perfcounters so we can see whether we are missing osdmaps in the cache. This will let us tell whether, given a workload or environment, our osdmap cache might be too small. Signed-off-by: Sage Weil --- src/osd/OSD.cc | 21 +++++++++++++++++++-- src/osd/OSD.h | 2 ++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 7913c41055d..795ec29d9a0 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1395,8 +1395,13 @@ void OSDService::send_incremental_map(epoch_t since, Connection *con, bool OSDService::_get_map_bl(epoch_t e, bufferlist& bl) { bool found = map_bl_cache.lookup(e, &bl); - if (found) + if (found) { + if (logger) + logger->inc(l_osd_map_bl_cache_hit); return true; + } + if (logger) + logger->inc(l_osd_map_bl_cache_miss); found = store->read(coll_t::meta(), OSD::get_osdmap_pobject_name(e), 0, 0, bl) >= 0; if (found) @@ -1408,8 +1413,13 @@ bool OSDService::get_inc_map_bl(epoch_t e, bufferlist& bl) { Mutex::Locker l(map_cache_lock); bool found = map_bl_inc_cache.lookup(e, &bl); - if (found) + if (found) { + if (logger) + logger->inc(l_osd_map_bl_cache_hit); return true; + } + if (logger) + logger->inc(l_osd_map_bl_cache_miss); found = store->read(coll_t::meta(), OSD::get_inc_osdmap_pobject_name(e), 0, 0, bl) >= 0; if (found) @@ -2915,6 +2925,7 @@ void OSD::create_logger() osd_plb.add_u64_counter( l_osd_waiting_for_map, "messages_delayed_for_map", "Operations waiting for OSD map"); + osd_plb.add_u64_counter( l_osd_map_cache_hit, "osd_map_cache_hit", "osdmap cache hit"); osd_plb.add_u64_counter( @@ -2925,6 +2936,12 @@ void OSD::create_logger() 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_counter( + l_osd_map_bl_cache_hit, "osd_map_bl_cache_hit", + "OSDMap buffer cache hits"); + osd_plb.add_u64_counter( + l_osd_map_bl_cache_miss, "osd_map_bl_cache_miss", + "OSDMap buffer cache misses"); 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 cad51ed9264..ccf66d4a91d 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -131,6 +131,8 @@ enum { l_osd_map_cache_miss, l_osd_map_cache_miss_low, l_osd_map_cache_miss_low_avg, + l_osd_map_bl_cache_hit, + l_osd_map_bl_cache_miss, l_osd_stat_bytes, l_osd_stat_bytes_used,