]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: allow request load average decay rate configurable via admin socket
authorVenky Shankar <vshankar@redhat.com>
Tue, 3 Jul 2018 12:06:39 +0000 (08:06 -0400)
committerPatrick Donnelly <pdonnell@redhat.com>
Fri, 28 Sep 2018 21:53:24 +0000 (14:53 -0700)
Signed-off-by: Venky Shankar <vshankar@redhat.com>
(cherry picked from commit 3809d96a5b53721b88602d662c4c1cd00dd727a0)

Conflicts:
src/mds/MDSRank.h
src/mds/SessionMap.h
src/mds/SessionMap.cc

src/mds/MDSDaemon.cc
src/mds/MDSRank.h
src/mds/SessionMap.cc
src/mds/SessionMap.h

index 8fe05807b360302da769537d64a01d99c0cf3ce1..d057eaa09bc9a54e468a28402fcf973245fb5a95 100644 (file)
@@ -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;
index d818a18cea23552ef8e27778c01ffb35376b4ed4..221bd3c9914387045573f8e3d5e73961bbec113e 100644 (file)
@@ -220,6 +220,7 @@ class MDSRank {
                             const std::set <std::string> &changed)
     {
       mdcache->handle_conf_change(conf, changed, *mdsmap);
+      sessionmap.handle_conf_change(conf, changed);
       purge_queue.handle_conf_change(conf, changed, *mdsmap);
     }
 
index 849b497260b5cb202e406673eba297b5cde9220b..2cb99d1f549ef4d9332db86ce1f0f75befd8dbaa 100644 (file)
@@ -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 <std::string> &changed) {
+  if (changed.count("mds_request_load_average_decay_rate")) {
+    decay_rate = conf->get_val<double>("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<std::string> &args,
     std::stringstream *ss)
index 8e2ddccf8596a707e8bb8c61f92cd968cc6f18d3..91a8345809675158a1062f5f168423ea1b5482a9 100644 (file)
@@ -694,6 +694,8 @@ private:
 
 public:
   void hit_session(Session *session);
+  void handle_conf_change(const struct md_config_t *conf,
+                          const std::set <std::string> &changed);
 };
 
 std::ostream& operator<<(std::ostream &out, const Session &s);