From 128437c57956bfaf5fb1ae08dd95f692d7ef2f93 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 19 Sep 2018 16:12:15 -0500 Subject: [PATCH] mon/PGMap: add get_recovery_stats() 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 --- src/mon/PGMap.cc | 30 ++++++++++++++++++++++++++++++ src/mon/PGMap.h | 5 +++++ 2 files changed, 35 insertions(+) diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index 7dd0d1ac6dc..99551a2b40b 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -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 *psl, const pool_stat_t& pool_sum) const { diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h index 7c8f1077df4..69ec40e5b71 100644 --- a/src/mon/PGMap.h +++ b/src/mon/PGMap.h @@ -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; -- 2.39.5