]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mon/PGMap: add get_recovery_stats()
authorSage Weil <sage@redhat.com>
Wed, 19 Sep 2018 21:12:15 +0000 (16:12 -0500)
committerSage Weil <sage@redhat.com>
Tue, 16 Oct 2018 12:22:48 +0000 (07:22 -0500)
This is some of the same info we get in the json dump from
print_summary -> overall_recovery_summary -> recovery_summary.

Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/PGMap.cc
src/mon/PGMap.h

index 7dd0d1ac6dcbf5de15d1b52355873023a11db6d7..99551a2b40bee6bc8de635b6e5ae0be5a54dc3ce 100644 (file)
@@ -392,6 +392,36 @@ void PGMapDigest::print_oneline_summary(Formatter *f, ostream *out) const
     *out << "; " << ssr.str() << " recovering";
 }
 
+void PGMapDigest::get_recovery_stats(
+    double *misplaced_ratio,
+    double *degraded_ratio,
+    double *inactive_pgs_ratio,
+    double *unknown_pgs_ratio) const
+{
+  if (pg_sum.stats.sum.num_objects_degraded &&
+      pg_sum.stats.sum.num_object_copies > 0) {
+    *degraded_ratio = (double)pg_sum.stats.sum.num_objects_degraded /
+      (double)pg_sum.stats.sum.num_object_copies;
+  } else {
+    *degraded_ratio = 0;
+  }
+  if (pg_sum.stats.sum.num_objects_misplaced &&
+      pg_sum.stats.sum.num_object_copies > 0) {
+    *misplaced_ratio = (double)pg_sum.stats.sum.num_objects_misplaced /
+      (double)pg_sum.stats.sum.num_object_copies;
+  } else {
+    *misplaced_ratio = 0;
+  }
+  if (num_pg > 0) {
+    int num_pg_inactive = num_pg - num_pg_active - num_pg_unknown;
+    *inactive_pgs_ratio = (double)num_pg_inactive / (double)num_pg;
+    *unknown_pgs_ratio = (double)num_pg_unknown / (double)num_pg;
+ } else {
+    *inactive_pgs_ratio = 0;
+    *unknown_pgs_ratio = 0;
+  }
+}
+
 void PGMapDigest::recovery_summary(Formatter *f, list<string> *psl,
                              const pool_stat_t& pool_sum) const
 {
index 7c8f1077df45c71a140a44baf340d240c214f77a..69ec40e5b71d2ba5f3b7a9f48ad77cfc54a5e2ef 100644 (file)
@@ -92,6 +92,11 @@ public:
   pool_stat_t pg_sum_delta;
   utime_t stamp_delta;
 
+  void get_recovery_stats(
+    double *misplaced_ratio,
+    double *degraded_ratio,
+    double *inactive_ratio,
+    double *unknown_pgs_ratio) const;
 
   void print_summary(Formatter *f, ostream *out) const;
   void print_oneline_summary(Formatter *f, ostream *out) const;