From: Sage Weil Date: Tue, 13 Aug 2013 22:53:11 +0000 (-0700) Subject: mon/PGMap: break out print_oneline_summary X-Git-Tag: v0.68~69^2~9 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1860ed97ef054df5ff67e8aae1893a307b995a43;p=ceph.git mon/PGMap: break out print_oneline_summary Signed-off-by: Sage Weil --- diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index f6b88fcbfe01..b5e6c4ecb89c 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -822,7 +822,7 @@ void PGMap::print_summary(Formatter *f, ostream *out) const *out << "v" << version << ": " << pg_stat.size() << " pgs: " << states << "; " - << prettybyte_t(pg_sum.stats.sum.num_bytes) << " data, " + << prettybyte_t(pg_sum.stats.sum.num_bytes) << " data, " << kb_t(osd_sum.kb_used) << " used, " << kb_t(osd_sum.kb_avail) << " / " << kb_t(osd_sum.kb) << " avail"; @@ -867,6 +867,53 @@ void PGMap::print_summary(Formatter *f, ostream *out) const *out << "; " << ssr.str(); } +void PGMap::print_oneline_summary(ostream *out) const +{ + std::stringstream ss; + + for (hash_map::const_iterator p = num_pg_by_state.begin(); + p != num_pg_by_state.end(); + ++p) { + if (p != num_pg_by_state.begin()) + ss << ", "; + ss << p->second << " " << pg_state_string(p->first); + } + + string states = ss.str(); + *out << "v" << version << ": " + << pg_stat.size() << " pgs: " + << states << "; " + << prettybyte_t(pg_sum.stats.sum.num_bytes) << " data, " + << kb_t(osd_sum.kb_used) << " used, " + << kb_t(osd_sum.kb_avail) << " / " + << kb_t(osd_sum.kb) << " avail"; + + // make non-negative; we can get negative values if osds send + // uncommitted stats and then "go backward" or if they are just + // buggy/wrong. + pool_stat_t pos_delta = pg_sum_delta; + pos_delta.floor(0); + if (pos_delta.stats.sum.num_rd || + pos_delta.stats.sum.num_wr) { + *out << "; "; + if (pos_delta.stats.sum.num_rd) { + int64_t rd = (pos_delta.stats.sum.num_rd_kb << 10) / (double)stamp_delta; + *out << si_t(rd) << "B/s rd, "; + } + if (pos_delta.stats.sum.num_wr) { + int64_t wr = (pos_delta.stats.sum.num_wr_kb << 10) / (double)stamp_delta; + *out << si_t(wr) << "B/s wr, "; + } + int64_t iops = (pos_delta.stats.sum.num_rd + pos_delta.stats.sum.num_wr) / (double)stamp_delta; + *out << si_t(iops) << "op/s"; + } + + std::stringstream ssr; + recovery_summary(NULL, &ssr); + if (ssr.str().length()) + *out << "; " << ssr.str(); +} + void PGMap::generate_test_instances(list& o) { o.push_back(new PGMap); diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h index e59d1b81a205..a44d26d86d0c 100644 --- a/src/mon/PGMap.h +++ b/src/mon/PGMap.h @@ -170,6 +170,7 @@ public: void recovery_summary(Formatter *f, ostream *out) const; void print_summary(Formatter *f, ostream *out) const; + void print_oneline_summary(ostream *out) const; epoch_t calc_min_last_epoch_clean() const; @@ -179,7 +180,7 @@ WRITE_CLASS_ENCODER_FEATURES(PGMap::Incremental) WRITE_CLASS_ENCODER_FEATURES(PGMap) inline ostream& operator<<(ostream& out, const PGMap& m) { - m.print_summary(NULL, &out); + m.print_oneline_summary(&out); return out; }