From: xinxin shu Date: Tue, 28 Apr 2015 00:22:08 +0000 (+0800) Subject: add perf counter for leveldb to evaluate latency of get&commit X-Git-Tag: v9.0.1~63^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d2fb5bd740370354530fea76586845cce0ed0868;p=ceph.git add perf counter for leveldb to evaluate latency of get&commit Signed-off-by: xinxin shu --- diff --git a/src/os/LevelDBStore.cc b/src/os/LevelDBStore.cc index 65bb41be7ec..544f459a6bd 100644 --- a/src/os/LevelDBStore.cc +++ b/src/os/LevelDBStore.cc @@ -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(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(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 &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(); @@ -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; } diff --git a/src/os/LevelDBStore.h b/src/os/LevelDBStore.h index 0eedcb38e48..e07c32a8f05 100644 --- a/src/os/LevelDBStore.h +++ b/src/os/LevelDBStore.h @@ -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,