summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-08-13 15:53:11 -0700
committerSage Weil <sage@inktank.com>2013-08-13 16:51:38 -0700
commit1860ed97ef054df5ff67e8aae1893a307b995a43 (patch)
treef5b65c210fc4407fda9fbe532a5685eafb8c6ca0
parent054fd886d009f5374a7b563a08788edc72778734 (diff)
downloadceph-1860ed97ef054df5ff67e8aae1893a307b995a43.tar.gz
mon/PGMap: break out print_oneline_summary
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/mon/PGMap.cc49
-rw-r--r--src/mon/PGMap.h3
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;
}