diff options
author | Sage Weil <sage@inktank.com> | 2013-08-13 15:53:11 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-08-13 16:51:38 -0700 |
commit | 1860ed97ef054df5ff67e8aae1893a307b995a43 (patch) | |
tree | f5b65c210fc4407fda9fbe532a5685eafb8c6ca0 | |
parent | 054fd886d009f5374a7b563a08788edc72778734 (diff) | |
download | ceph-1860ed97ef054df5ff67e8aae1893a307b995a43.tar.gz |
mon/PGMap: break out print_oneline_summary
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/mon/PGMap.cc | 49 | ||||
-rw-r--r-- | src/mon/PGMap.h | 3 |
2 files changed, 50 insertions, 2 deletions
diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index f6b88fcbfe0..b5e6c4ecb89 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<int,int>::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<PGMap*>& o) { o.push_back(new PGMap); diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h index e59d1b81a20..a44d26d86d0 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; } |