]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
add perf counter for leveldb to evaluate latency of get&commit
authorxinxin shu <xinxin.shu@intel.com>
Tue, 28 Apr 2015 00:22:08 +0000 (08:22 +0800)
committerxinxin shu <xinxin.shu@intel.com>
Tue, 28 Apr 2015 01:25:35 +0000 (09:25 +0800)
Signed-off-by: xinxin shu <xinxin.shu@intel.com>
src/os/LevelDBStore.cc
src/os/LevelDBStore.h

index 65bb41be7ecb75d96a05a675668d739df70d9506..544f459a6bd2b8ba6da70d508010472b7540d67c 100644 (file)
@@ -77,6 +77,9 @@ int LevelDBStore::do_open(ostream &out, bool create_if_missing)
   PerfCountersBuilder plb(g_ceph_context, "leveldb", l_leveldb_first, l_leveldb_last);
   plb.add_u64_counter(l_leveldb_gets, "leveldb_get", "Gets");
   plb.add_u64_counter(l_leveldb_txns, "leveldb_transaction", "Transactions");
+  plb.add_time_avg(l_leveldb_get_latency, "leveldb_get_latency", "Get Latency");
+  plb.add_time_avg(l_leveldb_submit_latency, "leveldb_submit_latency", "Submit Latency");
+  plb.add_time_avg(l_leveldb_submit_sync_latency, "leveldb_submit_sync_latency", "Submit Sync Latency");
   plb.add_u64_counter(l_leveldb_compact, "leveldb_compact", "Compactions");
   plb.add_u64_counter(l_leveldb_compact_range, "leveldb_compact_range", "Compactions by range");
   plb.add_u64_counter(l_leveldb_compact_queue_merge, "leveldb_compact_queue_merge", "Mergings of ranges in compaction queue");
@@ -130,21 +133,27 @@ void LevelDBStore::close()
 
 int LevelDBStore::submit_transaction(KeyValueDB::Transaction t)
 {
+  utime_t start = ceph_clock_now(g_ceph_context);
   LevelDBTransactionImpl * _t =
     static_cast<LevelDBTransactionImpl *>(t.get());
   leveldb::Status s = db->Write(leveldb::WriteOptions(), &(_t->bat));
+  utime_t lat = ceph_clock_now(g_ceph_context) - start;
   logger->inc(l_leveldb_txns);
+  logger->tinc(l_leveldb_submit_latency, lat);
   return s.ok() ? 0 : -1;
 }
 
 int LevelDBStore::submit_transaction_sync(KeyValueDB::Transaction t)
 {
+  utime_t start = ceph_clock_now(g_ceph_context);
   LevelDBTransactionImpl * _t =
     static_cast<LevelDBTransactionImpl *>(t.get());
   leveldb::WriteOptions options;
   options.sync = true;
   leveldb::Status s = db->Write(options, &(_t->bat));
+  utime_t lat = ceph_clock_now(g_ceph_context) - start;
   logger->inc(l_leveldb_txns);
+  logger->tinc(l_leveldb_submit_sync_latency, lat);
   return s.ok() ? 0 : -1;
 }
 
@@ -187,6 +196,7 @@ int LevelDBStore::get(
     const std::set<string> &keys,
     std::map<string, bufferlist> *out)
 {
+  utime_t start = ceph_clock_now(g_ceph_context);
   KeyValueDB::Iterator it = get_iterator(prefix);
   for (std::set<string>::const_iterator i = keys.begin();
        i != keys.end();
@@ -197,7 +207,9 @@ int LevelDBStore::get(
     } else if (!it->valid())
       break;
   }
+  utime_t lat = ceph_clock_now(g_ceph_context) - start;
   logger->inc(l_leveldb_gets);
+  logger->tinc(l_leveldb_get_latency, lat);
   return 0;
 }
 
index 0eedcb38e481772865e4d00468874a32ab0b6ca8..e07c32a8f0537bd5197ec8fad20ccec128f09a98 100644 (file)
@@ -34,6 +34,9 @@ enum {
   l_leveldb_first = 34300,
   l_leveldb_gets,
   l_leveldb_txns,
+  l_leveldb_get_latency,
+  l_leveldb_submit_latency,
+  l_leveldb_submit_sync_latency,
   l_leveldb_compact,
   l_leveldb_compact_range,
   l_leveldb_compact_queue_merge,