From: Jaya Prakash Date: Mon, 9 Mar 2026 14:23:57 +0000 (+0000) Subject: os/bluestore: Add perf counters to measure frag tracking latencies X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=babefb71d3add075fc641c3e3b502ccf2a46a525;p=ceph.git os/bluestore: Add perf counters to measure frag tracking latencies Signed-off-by: Jaya Prakash --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 3f211162cf70..2b65cf8ca250 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -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( diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 6beecfa17ae3..19111a19432d 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -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 };