From: Sage Weil Date: Sat, 21 Jun 2014 00:56:25 +0000 (-0700) Subject: mon: warn about misplaced objects, just like degraded X-Git-Tag: v0.85~20^2~10 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d734d7fcac4e16d6369269675ed9bbf894ca94c0;p=ceph.git mon: warn about misplaced objects, just like degraded Signed-off-by: Sage Weil --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 5323e1f90832..1c75c74268c0 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -472,6 +472,7 @@ int Monitor::preinit() pcb.add_u64(l_cluster_num_pg_peering, "num_pg_peering"); pcb.add_u64(l_cluster_num_object, "num_object"); pcb.add_u64(l_cluster_num_object_degraded, "num_object_degraded"); + pcb.add_u64(l_cluster_num_object_misplaced, "num_object_misplaced"); pcb.add_u64(l_cluster_num_object_unfound, "num_object_unfound"); pcb.add_u64(l_cluster_num_bytes, "num_bytes"); pcb.add_u64(l_cluster_num_mds_up, "num_mds_up"); diff --git a/src/mon/Monitor.h b/src/mon/Monitor.h index c08e307fa705..5c8671c465b9 100644 --- a/src/mon/Monitor.h +++ b/src/mon/Monitor.h @@ -76,6 +76,7 @@ enum { l_cluster_num_pg_peering, l_cluster_num_object, l_cluster_num_object_degraded, + l_cluster_num_object_misplaced, l_cluster_num_object_unfound, l_cluster_num_bytes, l_cluster_num_mds_up, diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index 4c5c6ba3c592..b458df550ad0 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -677,7 +677,7 @@ void PGMap::dump_osd_stats(Formatter *f) const void PGMap::dump_pg_stats_plain(ostream& ss, const ceph::unordered_map& pg_stats) const { - ss << "pg_stat\tobjects\tmip\tdegr\tunf\tbytes\tlog\tdisklog\tstate\tstate_stamp\tv\treported\tup\tup_primary\tacting\tacting_primary\tlast_scrub\tscrub_stamp\tlast_deep_scrub\tdeep_scrub_stamp" << std::endl; + ss << "pg_stat\tobjects\tmip\tdegr\tmisp\tunf\tbytes\tlog\tdisklog\tstate\tstate_stamp\tv\treported\tup\tup_primary\tacting\tacting_primary\tlast_scrub\tscrub_stamp\tlast_deep_scrub\tdeep_scrub_stamp" << std::endl; for (ceph::unordered_map::const_iterator i = pg_stats.begin(); i != pg_stats.end(); ++i) { const pg_stat_t &st(i->second); @@ -686,6 +686,7 @@ void PGMap::dump_pg_stats_plain(ostream& ss, //<< "\t" << st.num_object_copies << "\t" << st.stats.sum.num_objects_missing_on_primary << "\t" << st.stats.sum.num_objects_degraded + << "\t" << st.stats.sum.num_objects_misplaced << "\t" << st.stats.sum.num_objects_unfound << "\t" << st.stats.sum.num_bytes << "\t" << st.log_size @@ -890,6 +891,23 @@ void PGMap::recovery_summary(Formatter *f, ostream *out, } first = false; } + if (delta_sum.stats.sum.num_objects_misplaced) { + double pc = (double)delta_sum.stats.sum.num_objects_misplaced / + (double)delta_sum.stats.sum.num_object_copies * (double)100.0; + char b[20]; + snprintf(b, sizeof(b), "%.3lf", pc); + if (f) { + f->dump_unsigned("misplaced_objects", delta_sum.stats.sum.num_objects_misplaced); + f->dump_unsigned("misplaced_total", delta_sum.stats.sum.num_object_copies); + f->dump_string("misplaced_ratio", b); + } else { + if (!first) + *out << "; "; + *out << delta_sum.stats.sum.num_objects_misplaced + << "/" << delta_sum.stats.sum.num_object_copies << " objects misplaced (" << b << "%)"; + } + first = false; + } if (delta_sum.stats.sum.num_objects_unfound) { double pc = (double)delta_sum.stats.sum.num_objects_unfound / (double)delta_sum.stats.sum.num_objects * (double)100.0; diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 807a93d3800a..48365518a398 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -114,6 +114,7 @@ void PGMonitor::update_logger() mon->cluster_logger->set(l_cluster_num_object, pg_map.pg_sum.stats.sum.num_objects); mon->cluster_logger->set(l_cluster_num_object_degraded, pg_map.pg_sum.stats.sum.num_objects_degraded); + mon->cluster_logger->set(l_cluster_num_object_misplaced, pg_map.pg_sum.stats.sum.num_objects_misplaced); mon->cluster_logger->set(l_cluster_num_object_unfound, pg_map.pg_sum.stats.sum.num_objects_unfound); mon->cluster_logger->set(l_cluster_num_bytes, pg_map.pg_sum.stats.sum.num_bytes); }