From: Sage Weil Date: Wed, 19 Sep 2018 21:12:15 +0000 (-0500) Subject: mon/PGMap: add get_recovery_stats() X-Git-Tag: 3.2-0~147^2~10 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=128437c57956bfaf5fb1ae08dd95f692d7ef2f93;p=ceph-ci.git 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 --- 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;