]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: Add perf counters to measure frag tracking latencies 67019/head
authorJaya Prakash <jayaprakash@ibm.com>
Mon, 9 Mar 2026 14:23:57 +0000 (14:23 +0000)
committerJaya Prakash <jayaprakash@ibm.com>
Thu, 9 Apr 2026 17:00:13 +0000 (17:00 +0000)
Signed-off-by: Jaya Prakash <jayaprakash@ibm.com>
src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h

index 3f211162cf70e01893d702b3907e687fbc1c316a..2b65cf8ca25034ac26cca12f742c4414b9773aa0 100644 (file)
@@ -6701,6 +6701,19 @@ void BlueStore::_init_logger()
     "bsal",
     PerfCountersBuilder::PRIO_USEFUL);
 
+  // Fragmentation Tracking counters
+  //****************************************
+  b.add_time_avg(l_bluestore_runtime_frag_lat,
+    "runtime_frag_lat",
+    "Latency of runtime fragmentation measurement",
+    "rfl",
+    PerfCountersBuilder::PRIO_USEFUL);
+  b.add_time_avg(l_bluestore_static_frag_lat,
+    "static_frag_lat",
+    "Latency of static fragmentation measurement during scrub",
+    "sfl",
+    PerfCountersBuilder::PRIO_USEFUL);
+
   logger = b.create_perf_counters();
   cct->get_perfcounters_collection()->add(logger);
 }
@@ -13072,12 +13085,15 @@ void BlueStore::_measure_runtime_frag(
     c->runtime_read_samples.fetch_add(1, std::memory_order_relaxed);
     c->runtime_frag_count.fetch_add(frag.frag_score, std::memory_order_relaxed);
   }
+  auto finish = mono_clock::now();
+  logger->tinc_with_max(l_bluestore_runtime_frag_lat, finish - start);
 }
 
 void BlueStore::_measure_static_frag(
   Collection *c,
   const OnodeRef& o)
 {
+  auto start = mono_clock::now();
   auto read_samples = c->object_read_samples.load(std::memory_order_relaxed);
   auto frag_score = o->get_fragmentation_score();
   if (read_samples == 0) {
@@ -13087,6 +13103,8 @@ void BlueStore::_measure_static_frag(
     c->static_frag_score.fetch_add(frag_score, std::memory_order_relaxed);
     c->object_read_samples.fetch_add(1, std::memory_order_relaxed);
   }
+  auto finish = mono_clock::now();
+  logger->tinc_with_max(l_bluestore_static_frag_lat, finish - start);
 }
 
 int BlueStore::_do_read(
index 6beecfa17ae3d85e510d0f8a45f103e97e3b44fa..19111a19432dd28e69520f85af038d32204a2250 100644 (file)
@@ -244,6 +244,12 @@ enum {
   l_bluestore_slow_op_normal_count,
   l_bluestore_slow_op_scrub_count,
   //****************************************
+
+  // Fragmentation tracking
+  //****************************************
+  l_bluestore_runtime_frag_lat,
+  l_bluestore_static_frag_lat,
+  //****************************************
   l_bluestore_last
 };