]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/PGMap: break out print_oneline_summary
authorSage Weil <sage@inktank.com>
Tue, 13 Aug 2013 22:53:11 +0000 (15:53 -0700)
committerSage Weil <sage@inktank.com>
Tue, 13 Aug 2013 23:51:38 +0000 (16:51 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
src/mon/PGMap.cc
src/mon/PGMap.h

index f6b88fcbfe017215d1ee9708c3c93e25061787cb..b5e6c4ecb89cc7074181e4daf8e8094216816ccd 100644 (file)
@@ -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);
index e59d1b81a205cc48d044653b4442c92901d5d94d..a44d26d86d0ca581d4f9a1f8a9583327ea85395d 100644 (file)
@@ -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;
 }