From: Varada Kari Date: Thu, 22 Dec 2016 09:49:38 +0000 (+0530) Subject: os/kv: beautify kvdb statistics X-Git-Tag: v12.0.0~97^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8e1d4ac92e2f9cd5f7438a99459bc063adf2542b;p=ceph.git os/kv: beautify kvdb statistics Improves the presentation of rocksdb dump statistics Signed-off-by: Varada Kari --- diff --git a/src/kv/RocksDBStore.cc b/src/kv/RocksDBStore.cc index 2e339c062c55..4b7b2b98db6d 100644 --- a/src/kv/RocksDBStore.cc +++ b/src/kv/RocksDBStore.cc @@ -370,6 +370,21 @@ void RocksDBStore::close() cct->get_perfcounters_collection()->remove(logger); } +void RocksDBStore::split(const std::string &s, char delim, std::vector &elems) { + std::stringstream ss; + ss.str(s); + std::string item; + while (std::getline(ss, item, delim)) { + elems.push_back(item); + } +} + +std::vector RocksDBStore::split(const std::string &s, char delim) { + std::vector elems; + split(s, delim, elems); + return elems; +} + void RocksDBStore::get_statistics(Formatter *f) { if (!g_conf->rocksdb_perf) { @@ -379,18 +394,29 @@ void RocksDBStore::get_statistics(Formatter *f) } if (g_conf->rocksdb_collect_compaction_stats) { - std::string stats; - bool status = db->GetProperty("rocksdb.stats", &stats); + std::string stat_str; + bool status = db->GetProperty("rocksdb.stats", &stat_str); if (status) { f->open_object_section("rocksdb_statistics"); - f->dump_string("rocksdb_compaction_statistics", stats); + f->dump_string("rocksdb_compaction_statistics", ""); + vector stats; + split(stat_str, '\n', stats); + for (auto st :stats) { + f->dump_string("", st); + } f->close_section(); } } if (g_conf->rocksdb_collect_extended_stats) { if (dbstats) { f->open_object_section("rocksdb_extended_statistics"); - f->dump_string("rocksdb_extended_statistics", dbstats->ToString().c_str()); + string stat_str = dbstats->ToString(); + vector stats; + split(stat_str, '\n', stats); + f->dump_string("rocksdb_extended_statistics", ""); + for (auto st :stats) { + f->dump_string(".", st); + } f->close_section(); } f->open_object_section("rocksdbstore_perf_counters"); diff --git a/src/kv/RocksDBStore.h b/src/kv/RocksDBStore.h index 0560de7f7159..9b11d9aa84c5 100644 --- a/src/kv/RocksDBStore.h +++ b/src/kv/RocksDBStore.h @@ -150,6 +150,8 @@ public: void close(); + void split(const std::string &s, char delim, std::vector &elems); + std::vector split(const std::string &s, char delim); void get_statistics(Formatter *f); struct RocksWBHandler: public rocksdb::WriteBatch::Handler {