]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: instrument osdmap bl cache hits and misses
authorSage Weil <sage@redhat.com>
Thu, 25 May 2017 19:41:04 +0000 (15:41 -0400)
committerSage Weil <sage@redhat.com>
Fri, 26 May 2017 02:52:33 +0000 (22:52 -0400)
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 <sage@redhat.com>
src/osd/OSD.cc
src/osd/OSD.h

index 7913c41055d5d96c9fcd16156def7871363286f6..795ec29d9a093f3ba434d98eec59721713069bbe 100644 (file)
@@ -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");
index cad51ed9264357feab9b6804030baa0ea594bb21..ccf66d4a91dbacafe96810900663a1b4f432c10a 100644 (file)
@@ -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,