From 27e7cda322547b820cc5c0b5443c3dbbb4897e80 Mon Sep 17 00:00:00 2001 From: dongdong Date: Mon, 3 Jul 2017 23:49:36 +0800 Subject: [PATCH] MDS: update the mlogger of mds in function check_memory_usage If we don't update the mlogger here, we will encounter following bug: suppose we first create 10000 inode in mdcache, then we trimmed it to 1000 but the "ceph daemon mds.* perf dump" will not show the correct inode number, it still shows 10000. because for now we only update the mlogger at MDSRank::_dispatch. check_memory_usage is called right after "mdcache trimming" at every mds tick interval so this change will keep "ceph daemon mds.* perf dump" got the right number for "mds_mem". Signed-off-by: dongdong tao --- src/mds/MDCache.cc | 1 + src/mds/MDSRank.cc | 10 ++++++---- src/mds/MDSRank.h | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index abdf5b2a75e..6da1a51b3c2 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -7437,6 +7437,7 @@ void MDCache::check_memory_usage() << ", " << Capability::count() << " caps, " << caps_per_inode << " caps per inode" << dendl; + mds->update_mlogger(); mds->mlogger->set(l_mdm_rss, last.get_rss()); mds->mlogger->set(l_mdm_heap, last.get_heap()); diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 6d75054adcf..d2501bbb56f 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -657,12 +657,17 @@ bool MDSRank::_dispatch(Message *m, bool new_msg) } */ + update_mlogger(); + return true; +} + +void MDSRank::update_mlogger() +{ if (mlogger) { mlogger->set(l_mdm_ino, CInode::count()); mlogger->set(l_mdm_dir, CDir::count()); mlogger->set(l_mdm_dn, CDentry::count()); mlogger->set(l_mdm_cap, Capability::count()); - mlogger->set(l_mdm_inoa, CInode::increments()); mlogger->set(l_mdm_inos, CInode::decrements()); mlogger->set(l_mdm_dira, CDir::increments()); @@ -671,11 +676,8 @@ bool MDSRank::_dispatch(Message *m, bool new_msg) mlogger->set(l_mdm_dns, CDentry::decrements()); mlogger->set(l_mdm_capa, Capability::increments()); mlogger->set(l_mdm_caps, Capability::decrements()); - mlogger->set(l_mdm_buf, buffer::get_total_alloc()); } - - return true; } /* diff --git a/src/mds/MDSRank.h b/src/mds/MDSRank.h index e8ec9dc07c2..7c6df739d90 100644 --- a/src/mds/MDSRank.h +++ b/src/mds/MDSRank.h @@ -210,6 +210,7 @@ class MDSRank { purge_queue.handle_conf_change(conf, changed, *mdsmap); } + void update_mlogger(); protected: // Flag to indicate we entered shutdown: anyone seeing this to be true // after taking mds_lock must drop out. -- 2.39.5