]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr: add subvolume quota metrics to the manager
authorIgor Golikov <igolikov@redhat.com>
Mon, 8 Dec 2025 11:37:41 +0000 (11:37 +0000)
committerIgor Golikov <igolikov@redhat.com>
Tue, 30 Dec 2025 17:45:43 +0000 (17:45 +0000)
Signed-off-by: Igor Golikov <igolikov@redhat.com>
Fixes: https://tracker.ceph.com/issues/74135
src/mgr/BaseMgrModule.cc
src/mgr/MDSPerfMetricTypes.cc
src/mgr/MDSPerfMetricTypes.h

index 5c441c41cc6632f5b3912c8222e0a474fa3f8507..4de20b9d7e2cfa64e8f54d8b0322a73a76f77c5a 100644 (file)
@@ -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;
index ce00b9a337bc64dcdbe637ff972680624924fd06..1d16fc4ac5932e9fac7e675c2225174065aa8231 100644 (file)
@@ -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;
index aab533938e6759669a458fc4e511eb5951379107..fe35fd3f232429662afd1b30f782d7b07a95ffd6 100644 (file)
@@ -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<uint64_t>::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);