From: Zhiqiang Wang Date: Tue, 11 Aug 2015 06:52:55 +0000 (+0800) Subject: mon: fix the output of cache_io_rate_summary X-Git-Tag: v9.1.0~335^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=af2a38bfb7d38b02262fceba46b5cfd307903186;p=ceph.git mon: fix the output of cache_io_rate_summary If there is no flush but evict/promote ongoing, the output doesn't look good. Signed-off-by: Zhiqiang Wang --- diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index 0b4c8ddcf885..a564d71784db 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -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; } } }