Skip to content

Commit

Permalink
Merge pull request #10539 from jcsp/wip-mds-counters
Browse files Browse the repository at this point in the history
mds: add perf counters for MDLog replay and SessionMap

Reviewed-by: Greg Farnum <gfarnum@redhat.com>
  • Loading branch information
John Spray committed Aug 5, 2016
2 parents 8865846 + 9d84634 commit e688f5f
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 3 deletions.
3 changes: 3 additions & 0 deletions src/mds/MDLog.cc
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ void MDLog::create_logger()
plb.add_u64(l_mdl_rdpos, "rdpos", "Journaler read position");
plb.add_u64(l_mdl_jlat, "jlat", "Journaler flush latency");

plb.add_u64_counter(l_mdl_replayed, "replayed", "Events replayed");

// logger
logger = plb.create_perf_counters();
g_ceph_context->get_perfcounters_collection()->add(logger);
Expand Down Expand Up @@ -1369,6 +1371,7 @@ void MDLog::_replay_thread()
if (mds->is_daemon_stopping()) {
return;
}
logger->inc(l_mdl_replayed);
le->replay(mds);
}
}
Expand Down
1 change: 1 addition & 0 deletions src/mds/MDLog.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ enum {
l_mdl_wrpos,
l_mdl_rdpos,
l_mdl_jlat,
l_mdl_replayed,
l_mdl_last,
};

Expand Down
1 change: 1 addition & 0 deletions src/mds/MDSRank.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2392,6 +2392,7 @@ void MDSRank::create_logger()

mdlog->create_logger();
server->create_logger();
sessionmap.register_perfcounters();
mdcache->register_perfcounters();
}

Expand Down
20 changes: 19 additions & 1 deletion src/mds/SessionMap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,19 @@ class SessionMapIOContext : public MDSIOContextBase
}
};


void SessionMap::register_perfcounters()
{
PerfCountersBuilder plb(g_ceph_context, "mds_sessions",
l_mdssm_first, l_mdssm_last);
plb.add_u64(l_mdssm_session_count, "session_count",
"Session count");
plb.add_u64_counter(l_mdssm_session_add, "session_add",
"Sessions added");
plb.add_u64_counter(l_mdssm_session_remove, "session_remove",
"Sessions removed");
logger = plb.create_perf_counters();
g_ceph_context->get_perfcounters_collection()->add(logger);
}

void SessionMap::dump()
{
Expand Down Expand Up @@ -557,6 +569,9 @@ void SessionMap::add_session(Session *s)
by_state[s->state] = new xlist<Session*>;
by_state[s->state]->push_back(&s->item_session_list);
s->get();

logger->set(l_mdssm_session_count, session_map.size());
logger->inc(l_mdssm_session_add);
}

void SessionMap::remove_session(Session *s)
Expand All @@ -571,6 +586,9 @@ void SessionMap::remove_session(Session *s)
}
null_sessions.insert(s->info.inst.name);
s->put();

logger->set(l_mdssm_session_count, session_map.size());
logger->inc(l_mdssm_session_remove);
}

void SessionMap::touch_session(Session *session)
Expand Down
25 changes: 23 additions & 2 deletions src/mds/SessionMap.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ using std::set;
#include "include/interval_set.h"
#include "mdstypes.h"
#include "mds/MDSAuthCaps.h"
#include "common/perf_counters.h"

class CInode;
struct MDRequestImpl;
Expand All @@ -34,6 +35,13 @@ struct MDRequestImpl;
#include "Capability.h"
#include "msg/Message.h"

enum {
l_mdssm_first = 5500,
l_mdssm_session_count,
l_mdssm_session_add,
l_mdssm_session_remove,
l_mdssm_last,
};

/*
* session
Expand Down Expand Up @@ -376,8 +384,9 @@ class MDSRank;
class SessionMapStore {
protected:
version_t version;
public:
ceph::unordered_map<entity_name_t, Session*> session_map;
PerfCounters *logger;
public:
mds_rank_t rank;

version_t get_version() const {return version;}
Expand All @@ -401,6 +410,10 @@ class SessionMapStore {
s = session_map[i.name] = new Session;
s->info.inst = i;
s->last_cap_renew = ceph_clock_now(g_ceph_context);
if (logger) {
logger->set(l_mdssm_session_count, session_map.size());
logger->inc(l_mdssm_session_add);
}
}

return s;
Expand All @@ -413,7 +426,7 @@ class SessionMapStore {
session_map.clear();
}

SessionMapStore() : version(0), rank(MDS_RANK_NONE) {}
SessionMapStore() : version(0), logger(nullptr), rank(MDS_RANK_NONE) {}
virtual ~SessionMapStore() {};
};

Expand All @@ -437,8 +450,16 @@ class SessionMap : public SessionMapStore {
{
for (auto p : by_state)
delete p.second;

if (logger) {
g_ceph_context->get_perfcounters_collection()->remove(logger);
}

delete logger;
}

void register_perfcounters();

void set_version(const version_t v)
{
version = projected = v;
Expand Down

0 comments on commit e688f5f

Please sign in to comment.