From: Sage Weil Date: Tue, 30 May 2017 18:47:04 +0000 (-0400) Subject: mempool: dump total, too X-Git-Tag: ses5-milestone6~9^2~44^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5f37da539ac0da3eb35c80c81d053075a3fdc381;p=ceph.git mempool: dump total, too Signed-off-by: Sage Weil --- diff --git a/src/common/mempool.cc b/src/common/mempool.cc index ccb74dd1ea0a..b6666d6b41b6 100644 --- a/src/common/mempool.cc +++ b/src/common/mempool.cc @@ -41,12 +41,14 @@ const char *mempool::get_pool_name(mempool::pool_index_t ix) { void mempool::dump(ceph::Formatter *f) { + stats_t total; for (size_t i = 0; i < num_pools; ++i) { const pool_t &pool = mempool::get_pool((pool_index_t)i); f->open_object_section(get_pool_name((pool_index_t)i)); - pool.dump(f); + pool.dump(f, &total); f->close_section(); } + f->dump_object("total", total); } void mempool::set_debug_mode(bool d) @@ -103,11 +105,14 @@ void mempool::pool_t::get_stats( } } -void mempool::pool_t::dump(ceph::Formatter *f) const +void mempool::pool_t::dump(ceph::Formatter *f, stats_t *ptotal) const { stats_t total; std::map by_type; get_stats(&total, &by_type); + if (ptotal) { + *ptotal += total; + } f->dump_object("total", total); if (!by_type.empty()) { for (auto &i : by_type) { diff --git a/src/include/mempool.h b/src/include/mempool.h index f7aecece5924..a79fc824f426 100644 --- a/src/include/mempool.h +++ b/src/include/mempool.h @@ -190,6 +190,12 @@ struct stats_t { f->dump_int("items", items); f->dump_int("bytes", bytes); } + + stats_t& operator+=(const stats_t& o) { + items += o.items; + bytes += o.bytes; + return *this; + } }; pool_t& get_pool(pool_index_t ix); @@ -246,7 +252,7 @@ public: void get_stats(stats_t *total, std::map *by_type) const; - void dump(ceph::Formatter *f) const; + void dump(ceph::Formatter *f, stats_t *ptotal=0) const; }; void dump(ceph::Formatter *f);