summaryrefslogtreecommitdiff
path: root/src/osdc
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@hq.newdream.net>2012-04-11 10:55:54 -0700
committerSage Weil <sage.weil@dreamhost.com>2012-04-13 21:51:20 -0700
commit72a75730b312109cb5df560abe04231bbbe9708d (patch)
tree5cef3e1fcefc95b061331b7270a80dd474ce01ce /src/osdc
parentbf8847e7c14a52467950c8f3bab88e43f660e3c0 (diff)
downloadceph-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.cc23
-rw-r--r--src/osdc/ObjectCacher.h15
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();