From 5711c0366604fa6ea420af6566c99f32a760450b Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 3 Dec 2008 16:41:53 -0800 Subject: [PATCH] osd: keep tabs on total object copies vs missing/degraded Define degraded as an object copy that is not present in the proper location. --- src/mon/PGMonitor.cc | 12 ++++++++---- src/osd/PG.cc | 10 +++++++++- src/osd/PG.h | 1 + src/osd/osd_types.h | 5 +++++ 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 0805ae33dc275..6217e075f3971 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -83,10 +83,14 @@ ostream& operator<<(ostream& out, PGMonitor& pm) << kb_t(pm.pg_map.osd_sum.kb_avail) << " / " << kb_t(pm.pg_map.osd_sum.kb) << " avail"; - if (pm.pg_map.pg_sum.num_objects_missing_on_primary) - out << "; " << pm.pg_map.pg_sum.num_objects_missing_on_primary << "/" - << pm.pg_map.pg_sum.num_objects << " mip"; - + if (pm.pg_map.pg_sum.num_objects_degraded) { + double pc = (double)pm.pg_map.pg_sum.num_objects_degraded / (double)pm.pg_map.pg_sum.num_object_copies * (double)100.0; + char b[20]; + sprintf(b, "%.3lf", pc); + out << "; " //<< pm.pg_map.pg_sum.num_objects_missing_on_primary << "/" + << pm.pg_map.pg_sum.num_objects_degraded + << "/" << pm.pg_map.pg_sum.num_object_copies << " degraded (" << b << "%)"; + } return out; } diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 2c6a3ce4060f0..f2f156e2af7a5 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -1412,7 +1412,15 @@ void PG::update_stats() pg_stats_stable.reported = osd->osdmap->get_epoch(); pg_stats_stable.state = state; pg_stats_stable.acting = acting; - pg_stats_stable.num_objects_missing_on_primary = missing.num_missing(); + + pg_stats_stable.num_object_copies = pg_stats_stable.num_objects * info.pgid.size(); + if (!is_clean()) { + pg_stats_stable.num_objects_missing_on_primary = missing.num_missing(); + int degraded = missing.num_missing(); + for (unsigned i=1; i