]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/kv: beautify kvdb statistics
authorVarada Kari <varada.kari@sandisk.com>
Thu, 22 Dec 2016 09:49:38 +0000 (15:19 +0530)
committerVarada Kari <varada.kari@sandisk.com>
Thu, 12 Jan 2017 08:22:02 +0000 (13:52 +0530)
Improves the presentation of rocksdb dump statistics

Signed-off-by: Varada Kari <varada.kari@sandisk.com>
src/kv/RocksDBStore.cc
src/kv/RocksDBStore.h

index 2e339c062c553129fc92efa63b562f400c3ce649..4b7b2b98db6d4b81497591da56bb0594e53fe9d9 100644 (file)
@@ -370,6 +370,21 @@ void RocksDBStore::close()
     cct->get_perfcounters_collection()->remove(logger);
 }
 
+void RocksDBStore::split(const std::string &s, char delim, std::vector<std::string> &elems) {
+    std::stringstream ss;
+    ss.str(s);
+    std::string item;
+    while (std::getline(ss, item, delim)) {
+        elems.push_back(item);
+    }
+}
+
+std::vector<std::string> RocksDBStore::split(const std::string &s, char delim) {
+    std::vector<std::string> 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<string> 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<string> 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");
index 0560de7f71598a49405006d63fe260f95090c8ac..9b11d9aa84c5f3ef5eb551ebf9bae705f97aa1cf 100644 (file)
@@ -150,6 +150,8 @@ public:
 
   void close();
 
+  void split(const std::string &s, char delim, std::vector<std::string> &elems);
+  std::vector<std::string> split(const std::string &s, char delim);
   void get_statistics(Formatter *f);
 
   struct  RocksWBHandler: public rocksdb::WriteBatch::Handler {