]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: fix the output of cache_io_rate_summary
authorZhiqiang Wang <zhiqiang.wang@intel.com>
Tue, 11 Aug 2015 06:52:55 +0000 (14:52 +0800)
committerZhiqiang Wang <zhiqiang.wang@intel.com>
Thu, 13 Aug 2015 02:01:17 +0000 (10:01 +0800)
If there is no flush but evict/promote ongoing, the output doesn't look
good.

Signed-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>
src/mon/PGMap.cc

index 0b4c8ddcf88524e00324649678789021c8e223c5..a564d71784db13b335de563bffee02255da8618c 100644 (file)
@@ -1206,32 +1206,37 @@ void PGMap::cache_io_rate_summary(Formatter *f, ostream *out,
 {
   pool_stat_t pos_delta = delta_sum;
   pos_delta.floor(0);
-  if (pos_delta.stats.sum.num_flush ||
-      pos_delta.stats.sum.num_evict ||
-      pos_delta.stats.sum.num_promote) {
-    if (pos_delta.stats.sum.num_flush) {
-      int64_t flush = (pos_delta.stats.sum.num_flush_kb << 10) / (double)delta_stamp;
-      if (f) {
-       f->dump_int("flush_bytes_sec", flush);
-      } else {
-       *out << pretty_si_t(flush) << "B/s flush";
-      }
+  bool have_output = false;
+
+  if (pos_delta.stats.sum.num_flush) {
+    int64_t flush = (pos_delta.stats.sum.num_flush_kb << 10) / (double)delta_stamp;
+    if (f) {
+      f->dump_int("flush_bytes_sec", flush);
+    } else {
+      *out << pretty_si_t(flush) << "B/s flush";
+      have_output = true;
     }
-    if (pos_delta.stats.sum.num_evict) {
-      int64_t evict = (pos_delta.stats.sum.num_evict_kb << 10) / (double)delta_stamp;
-      if (f) {
-       f->dump_int("evict_bytes_sec", evict);
-      } else {
-       *out << ", " << pretty_si_t(evict) << "B/s evict";
-      }
+  }
+  if (pos_delta.stats.sum.num_evict) {
+    int64_t evict = (pos_delta.stats.sum.num_evict_kb << 10) / (double)delta_stamp;
+    if (f) {
+      f->dump_int("evict_bytes_sec", evict);
+    } else {
+      if (have_output)
+       *out << ", ";
+      *out << pretty_si_t(evict) << "B/s evict";
+      have_output = true;
     }
-    if (pos_delta.stats.sum.num_promote) {
-      int64_t promote = pos_delta.stats.sum.num_promote / (double)delta_stamp;
-      if (f) {
-        f->dump_int("promote_op_per_sec", promote);
-      } else {
-        *out << ", " << pretty_si_t(promote) << "op/s promote";
-      }
+  }
+  if (pos_delta.stats.sum.num_promote) {
+    int64_t promote = pos_delta.stats.sum.num_promote / (double)delta_stamp;
+    if (f) {
+      f->dump_int("promote_op_per_sec", promote);
+    } else {
+      if (have_output)
+       *out << ", ";
+      *out << pretty_si_t(promote) << "op/s promote";
+      have_output = true;
     }
   }
 }