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: v12.2.9~48^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0648d461e1be9b9f50b316c8d0b4aa0c809b64f2;p=ceph.git mds: allow request load average decay rate configurable via admin socket Signed-off-by: Venky Shankar (cherry picked from commit 3809d96a5b53721b88602d662c4c1cd00dd727a0) Conflicts: src/mds/MDSRank.h src/mds/SessionMap.h src/mds/SessionMap.cc --- diff --git a/src/mds/MDSDaemon.cc b/src/mds/MDSDaemon.cc index 8fe05807b360..d057eaa09bc9 100644 --- a/src/mds/MDSDaemon.cc +++ b/src/mds/MDSDaemon.cc @@ -379,6 +379,7 @@ const char** MDSDaemon::get_tracked_conf_keys() const "mds_inject_migrator_message_loss", "host", "fsid", + "mds_request_load_average_decay_rate", NULL }; return KEYS; diff --git a/src/mds/MDSRank.h b/src/mds/MDSRank.h index d818a18cea23..221bd3c99143 100644 --- a/src/mds/MDSRank.h +++ b/src/mds/MDSRank.h @@ -220,6 +220,7 @@ class MDSRank { const std::set &changed) { mdcache->handle_conf_change(conf, changed, *mdsmap); + sessionmap.handle_conf_change(conf, changed); purge_queue.handle_conf_change(conf, changed, *mdsmap); } diff --git a/src/mds/SessionMap.cc b/src/mds/SessionMap.cc index 849b497260b5..2cb99d1f549e 100644 --- a/src/mds/SessionMap.cc +++ b/src/mds/SessionMap.cc @@ -979,6 +979,29 @@ void SessionMap::hit_session(Session *session) { session->hit_session(); } +void SessionMap::handle_conf_change(const struct md_config_t *conf, + const std::set &changed) { + if (changed.count("mds_request_load_average_decay_rate")) { + decay_rate = conf->get_val("mds_request_load_average_decay_rate"); + dout(20) << __func__ << " decay rate changed to " << decay_rate << dendl; + + total_load_avg_rate = DecayRate(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 8e2ddccf8596..91a834580967 100644 --- a/src/mds/SessionMap.h +++ b/src/mds/SessionMap.h @@ -694,6 +694,8 @@ private: public: void hit_session(Session *session); + void handle_conf_change(const struct md_config_t *conf, + const std::set &changed); }; std::ostream& operator<<(std::ostream &out, const Session &s);