From 853837bcba5ee2261860330120cafef90ef55b11 Mon Sep 17 00:00:00 2001 From: Igor Golikov Date: Mon, 8 Dec 2025 11:37:41 +0000 Subject: [PATCH] mgr: add subvolume quota metrics to the manager Signed-off-by: Igor Golikov Fixes: https://tracker.ceph.com/issues/74135 --- src/mgr/BaseMgrModule.cc | 2 ++ src/mgr/MDSPerfMetricTypes.cc | 10 ++++++++++ src/mgr/MDSPerfMetricTypes.h | 10 +++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/mgr/BaseMgrModule.cc b/src/mgr/BaseMgrModule.cc index 5c441c41cc6..4de20b9d7e2 100644 --- a/src/mgr/BaseMgrModule.cc +++ b/src/mgr/BaseMgrModule.cc @@ -1177,6 +1177,8 @@ ceph_add_mds_perf_query(BaseMgrModule *self, PyObject *args) {"subv_write_throughput", MDSPerformanceCounterType::SUBV_WRITE_THROUGHPUT_METRIC}, {"subv_avg_read_latency", MDSPerformanceCounterType::SUBV_AVG_READ_LATENCY_METRIC}, {"subv_avg_write_latency", MDSPerformanceCounterType::SUBV_AVG_WRITE_LATENCY_METRIC}, + {"subv_quota_bytes", MDSPerformanceCounterType::SUBV_QUOTA_BYTES_METRIC}, + {"subv_used_bytes", MDSPerformanceCounterType::SUBV_USED_BYTES_METRIC}, }; PyObject *py_query = nullptr; diff --git a/src/mgr/MDSPerfMetricTypes.cc b/src/mgr/MDSPerfMetricTypes.cc index ce00b9a337b..1d16fc4ac59 100644 --- a/src/mgr/MDSPerfMetricTypes.cc +++ b/src/mgr/MDSPerfMetricTypes.cc @@ -47,6 +47,8 @@ void MDSPerformanceCounterDescriptor::pack_counter( case MDSPerformanceCounterType::SUBV_WRITE_THROUGHPUT_METRIC: case MDSPerformanceCounterType::SUBV_AVG_READ_LATENCY_METRIC: case MDSPerformanceCounterType::SUBV_AVG_WRITE_LATENCY_METRIC: + case MDSPerformanceCounterType::SUBV_QUOTA_BYTES_METRIC: + case MDSPerformanceCounterType::SUBV_USED_BYTES_METRIC: break; default: ceph_abort_msg("unknown counter type"); @@ -81,6 +83,8 @@ void MDSPerformanceCounterDescriptor::unpack_counter( case MDSPerformanceCounterType::SUBV_WRITE_THROUGHPUT_METRIC: case MDSPerformanceCounterType::SUBV_AVG_READ_LATENCY_METRIC: case MDSPerformanceCounterType::SUBV_AVG_WRITE_LATENCY_METRIC: + case MDSPerformanceCounterType::SUBV_QUOTA_BYTES_METRIC: + case MDSPerformanceCounterType::SUBV_USED_BYTES_METRIC: break; default: ceph_abort_msg("unknown counter type"); @@ -155,6 +159,12 @@ std::ostream& operator<<(std::ostream &os, const MDSPerformanceCounterDescriptor case MDSPerformanceCounterType::SUBV_AVG_WRITE_LATENCY_METRIC: os << "subv_avg_write_latency"; break; + case MDSPerformanceCounterType::SUBV_QUOTA_BYTES_METRIC: + os << "subv_quota_bytes"; + break; + case MDSPerformanceCounterType::SUBV_USED_BYTES_METRIC: + os << "subv_used_bytes"; + break; } return os; diff --git a/src/mgr/MDSPerfMetricTypes.h b/src/mgr/MDSPerfMetricTypes.h index aab533938e6..fe35fd3f232 100644 --- a/src/mgr/MDSPerfMetricTypes.h +++ b/src/mgr/MDSPerfMetricTypes.h @@ -146,7 +146,9 @@ enum class MDSPerformanceCounterType : uint8_t { SUBV_READ_THROUGHPUT_METRIC = 18, SUBV_WRITE_THROUGHPUT_METRIC = 19, SUBV_AVG_READ_LATENCY_METRIC = 20, - SUBV_AVG_WRITE_LATENCY_METRIC = 21 + SUBV_AVG_WRITE_LATENCY_METRIC = 21, + SUBV_QUOTA_BYTES_METRIC = 22, + SUBV_USED_BYTES_METRIC = 23 }; struct MDSPerformanceCounterDescriptor { @@ -176,6 +178,8 @@ struct MDSPerformanceCounterDescriptor { case MDSPerformanceCounterType::SUBV_WRITE_THROUGHPUT_METRIC: case MDSPerformanceCounterType::SUBV_AVG_READ_LATENCY_METRIC: case MDSPerformanceCounterType::SUBV_AVG_WRITE_LATENCY_METRIC: + case MDSPerformanceCounterType::SUBV_QUOTA_BYTES_METRIC: + case MDSPerformanceCounterType::SUBV_USED_BYTES_METRIC: return true; default: return false; @@ -431,6 +435,8 @@ struct AggregatedSubvolumeMetric { uint64_t write_iops = 0; uint64_t read_tpBs = 0; uint64_t write_tBps = 0; + uint64_t quota_bytes = 0; + uint64_t used_bytes = 0; uint64_t min_read_latency = std::numeric_limits::max(); uint64_t max_read_latency = 0; @@ -449,6 +455,8 @@ struct AggregatedSubvolumeMetric { f->dump_unsigned("write_iops", write_iops); f->dump_unsigned("read_tpBs", read_tpBs); f->dump_unsigned("write_tBps", write_tBps); + f->dump_unsigned("quota_bytes", quota_bytes); + f->dump_unsigned("used_bytes", used_bytes); f->dump_unsigned("min_read_latency_ns", min_read_latency); f->dump_unsigned("max_read_latency_ns", max_read_latency); -- 2.47.3