From 6e50f645c40be1296b878ad02ac779ac26dc426e Mon Sep 17 00:00:00 2001 From: xinxin shu Date: Tue, 28 Apr 2015 14:44:11 +0800 Subject: [PATCH] add perf counter for rocksdb to evaluate latency of get and transaction commit Signed-off-by: xinxin shu --- src/os/RocksDBStore.cc | 12 ++++++++++++ src/os/RocksDBStore.h | 3 +++ 2 files changed, 15 insertions(+) diff --git a/src/os/RocksDBStore.cc b/src/os/RocksDBStore.cc index bbec3e6953b77..200955801b8b3 100644 --- a/src/os/RocksDBStore.cc +++ b/src/os/RocksDBStore.cc @@ -140,6 +140,9 @@ int RocksDBStore::do_open(ostream &out, bool create_if_missing) PerfCountersBuilder plb(g_ceph_context, "rocksdb", l_rocksdb_first, l_rocksdb_last); plb.add_u64_counter(l_rocksdb_gets, "rocksdb_get", "Gets"); plb.add_u64_counter(l_rocksdb_txns, "rocksdb_transaction", "Transactions"); + plb.add_time_avg(l_rocksdb_get_latency, "rocksdb_get_latency", "Get latency"); + plb.add_time_avg(l_rocksdb_submit_latency, "rocksdb_submit_latency", "Submit Latency"); + plb.add_time_avg(l_rocksdb_submit_sync_latency, "rocksdb_submit_sync_latency", "Submit Sync Latency"); plb.add_u64_counter(l_rocksdb_compact, "rocksdb_compact", "Compactions"); plb.add_u64_counter(l_rocksdb_compact_range, "rocksdb_compact_range", "Compactions by range"); plb.add_u64_counter(l_rocksdb_compact_queue_merge, "rocksdb_compact_queue_merge", "Mergings of ranges in compaction queue"); @@ -194,24 +197,30 @@ void RocksDBStore::close() int RocksDBStore::submit_transaction(KeyValueDB::Transaction t) { + utime_t start = ceph_clock_now(g_ceph_context); RocksDBTransactionImpl * _t = static_cast(t.get()); rocksdb::WriteOptions woptions; woptions.disableWAL = options.disableWAL; rocksdb::Status s = db->Write(woptions, _t->bat); + utime_t lat = ceph_clock_now(g_ceph_context) - start; logger->inc(l_rocksdb_txns); + logger->tinc(l_rocksdb_submit_latency, lat); return s.ok() ? 0 : -1; } int RocksDBStore::submit_transaction_sync(KeyValueDB::Transaction t) { + utime_t start = ceph_clock_now(g_ceph_context); RocksDBTransactionImpl * _t = static_cast(t.get()); rocksdb::WriteOptions woptions; woptions.sync = true; woptions.disableWAL = options.disableWAL; rocksdb::Status s = db->Write(woptions, _t->bat); + utime_t lat = ceph_clock_now(g_ceph_context) - start; logger->inc(l_rocksdb_txns); + logger->tinc(l_rocksdb_submit_sync_latency, lat); return s.ok() ? 0 : -1; } int RocksDBStore::get_info_log_level(string info_log_level) @@ -279,6 +288,7 @@ int RocksDBStore::get( const std::set &keys, std::map *out) { + utime_t start = ceph_clock_now(g_ceph_context); KeyValueDB::Iterator it = get_iterator(prefix); for (std::set::const_iterator i = keys.begin(); i != keys.end(); @@ -289,7 +299,9 @@ int RocksDBStore::get( } else if (!it->valid()) break; } + utime_t lat = ceph_clock_now(g_ceph_context) - start; logger->inc(l_rocksdb_gets); + logger->tinc(l_rocksdb_get_latency, lat); return 0; } diff --git a/src/os/RocksDBStore.h b/src/os/RocksDBStore.h index 30803a348b7a3..0baa028e4abe0 100644 --- a/src/os/RocksDBStore.h +++ b/src/os/RocksDBStore.h @@ -26,6 +26,9 @@ enum { l_rocksdb_first = 34300, l_rocksdb_gets, l_rocksdb_txns, + l_rocksdb_get_latency, + l_rocksdb_submit_latency, + l_rocksdb_submit_sync_latency, l_rocksdb_compact, l_rocksdb_compact_range, l_rocksdb_compact_queue_merge, -- 2.39.5