diff options
author | Yehuda Sadeh <yehuda@hq.newdream.net> | 2012-04-11 10:55:54 -0700 |
---|---|---|
committer | Sage Weil <sage.weil@dreamhost.com> | 2012-04-13 21:51:20 -0700 |
commit | 72a75730b312109cb5df560abe04231bbbe9708d (patch) | |
tree | 5cef3e1fcefc95b061331b7270a80dd474ce01ce /src/osdc | |
parent | bf8847e7c14a52467950c8f3bab88e43f660e3c0 (diff) | |
download | ceph-72a75730b312109cb5df560abe04231bbbe9708d.tar.gz |
objectcacher: perf skeleton
Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
Conflicts:
src/osdc/ObjectCacher.cc
src/osdc/ObjectCacher.h
Diffstat (limited to 'src/osdc')
-rw-r--r-- | src/osdc/ObjectCacher.cc | 23 | ||||
-rw-r--r-- | src/osdc/ObjectCacher.h | 15 |
2 files changed, 37 insertions, 1 deletions
diff --git a/src/osdc/ObjectCacher.cc b/src/osdc/ObjectCacher.cc index 20ac4f3ba7e..f11f1271f62 100644 --- a/src/osdc/ObjectCacher.cc +++ b/src/osdc/ObjectCacher.cc @@ -4,6 +4,7 @@ #include "msg/Messenger.h" #include "ObjectCacher.h" #include "WritebackHandler.h" +#include "common/perf_counters.h" /*** ObjectCacher::BufferHead ***/ @@ -19,12 +20,32 @@ ObjectCacher:: ObjectCacher(CephContext *cct_, WritebackHandler& wb, Mutex& l, flush_set_callback_t flush_callback, void *flush_callback_arg) : + perfcounter(NULL), cct(cct_), writeback_handler(wb), lock(l), flush_set_callback(flush_callback), flush_set_callback_arg(flush_callback_arg), flusher_stop(false), flusher_thread(this), stat_waiter(0), stat_clean(0), stat_dirty(0), stat_rx(0), stat_tx(0), stat_missing(0) { - } + perf_start(); +} + +void ObjectCacher::perf_start() +{ + PerfCountersBuilder plb(cct, cct->_conf->name.to_str(), l_objectcacher_first, l_objectcacher_last); + + plb.add_u64_counter(l_objectcacher_cache_hit, "cache_hit"); + plb.add_u64_counter(l_objectcacher_cache_miss, "cache_miss"); + + perfcounter = plb.create_perf_counters(); + cct->get_perfcounters_collection()->add(perfcounter); +} + +void ObjectCacher::perf_stop() +{ + assert(perfcounter); + cct->get_perfcounters_collection()->remove(perfcounter); + delete perfcounter; +} ObjectCacher::BufferHead *ObjectCacher::Object::split(BufferHead *left, loff_t off) { diff --git a/src/osdc/ObjectCacher.h b/src/osdc/ObjectCacher.h index 29840a03e35..b2abf143ce1 100644 --- a/src/osdc/ObjectCacher.h +++ b/src/osdc/ObjectCacher.h @@ -16,8 +16,19 @@ class CephContext; class WritebackHandler; +class PerfCounters; + +enum { + l_objectcacher_first = 25000, + + l_objectcacher_cache_hit, + l_objectcacher_cache_miss, + + l_objectcacher_last, +}; class ObjectCacher { + PerfCounters *perfcounter; public: CephContext *cct; class Object; @@ -512,12 +523,16 @@ class ObjectCacher { } }; + void perf_start(); + void perf_stop(); + ObjectCacher(CephContext *cct_, WritebackHandler& wb, Mutex& l, flush_set_callback_t flush_callback, void *flush_callback_arg); ~ObjectCacher() { + perf_stop(); // we should be empty. for (vector<hash_map<sobject_t, Object *> >::iterator i = objects.begin(); i != objects.end(); |