From: Venky Shankar Date: Tue, 3 Jul 2018 12:06:39 +0000 (-0400) Subject: mds: allow request load average decay rate configurable via admin socket X-Git-Tag: v14.0.1~545^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3809d96a5b53721b88602d662c4c1cd00dd727a0;p=ceph.git mds: allow request load average decay rate configurable via admin socket Signed-off-by: Venky Shankar --- diff --git a/src/mds/MDSDaemon.cc b/src/mds/MDSDaemon.cc index 98c524556d76..30974291065c 100644 --- a/src/mds/MDSDaemon.cc +++ b/src/mds/MDSDaemon.cc @@ -370,6 +370,7 @@ const char** MDSDaemon::get_tracked_conf_keys() const "mds_inject_migrator_session_race", "host", "fsid", + "mds_request_load_average_decay_rate", NULL }; return KEYS; diff --git a/src/mds/MDSRank.h b/src/mds/MDSRank.h index f2ab258a4fe2..2cd8951a8ca6 100644 --- a/src/mds/MDSRank.h +++ b/src/mds/MDSRank.h @@ -224,6 +224,7 @@ class MDSRank { void handle_conf_change(const ConfigProxy& conf, const std::set &changed) { + sessionmap.handle_conf_change(conf, changed); mdcache->handle_conf_change(conf, changed, *mdsmap); purge_queue.handle_conf_change(conf, changed, *mdsmap); } diff --git a/src/mds/SessionMap.cc b/src/mds/SessionMap.cc index e64f45245bb0..50976f0d42f3 100644 --- a/src/mds/SessionMap.cc +++ b/src/mds/SessionMap.cc @@ -976,6 +976,29 @@ void SessionMap::hit_session(Session *session) { session->hit_session(); } +void SessionMap::handle_conf_change(const ConfigProxy &conf, + const std::set &changed) { + if (changed.count("mds_request_load_average_decay_rate")) { + decay_rate = g_conf().get_val("mds_request_load_average_decay_rate"); + dout(20) << __func__ << " decay rate changed to " << decay_rate << dendl; + + total_load_avg = DecayCounter(decay_rate); + + auto p = by_state.find(Session::STATE_OPEN); + if (p != by_state.end()) { + for (const auto &session : *(p->second)) { + session->set_load_avg_decay_rate(decay_rate); + } + } + p = by_state.find(Session::STATE_STALE); + if (p != by_state.end()) { + for (const auto &session : *(p->second)) { + session->set_load_avg_decay_rate(decay_rate); + } + } + } +} + int SessionFilter::parse( const std::vector &args, std::stringstream *ss) diff --git a/src/mds/SessionMap.h b/src/mds/SessionMap.h index 8a43e332f467..549e628298d3 100644 --- a/src/mds/SessionMap.h +++ b/src/mds/SessionMap.h @@ -715,6 +715,8 @@ private: public: void hit_session(Session *session); + void handle_conf_change(const ConfigProxy &conf, + const std::set &changed); }; std::ostream& operator<<(std::ostream &out, const Session &s);