]> git-server-git.apps.pok.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)
committerVenky Shankar <vshankar@redhat.com>
Tue, 6 Nov 2018 04:17:26 +0000 (09:47 +0530)
Signed-off-by: Venky Shankar <vshankar@redhat.com>
(cherry picked from commit 3809d96a5b53721b88602d662c4c1cd00dd727a0)

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

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

index d0197195946885303b160fc922b6b8456aa329d2..b71789efc8e64192cfd3668f48835bc4db317ebf 100644 (file)
@@ -391,6 +391,7 @@ const char** MDSDaemon::get_tracked_conf_keys() const
     "host",
     "fsid",
     "mds_cap_revoke_eviction_timeout",
+    "mds_request_load_average_decay_rate",
     NULL
   };
   return KEYS;
index e15d7e1e54bfee92f176f8f08ab03c3d3bce70d2..e86dace89562fd8ae3621c2ff89f07b9d034b230 100644 (file)
@@ -224,6 +224,7 @@ class MDSRank {
                             const std::set <std::string> &changed)
     {
       server->handle_conf_change(conf, changed);
+      sessionmap.handle_conf_change(conf, changed);
       mdcache->handle_conf_change(conf, changed, *mdsmap);
       purge_queue.handle_conf_change(conf, changed, *mdsmap);
     }
index 7a2d6d08b25ee5addb05c6813cfdc9cf2134b180..52805665064dd4e447c0ee79189f3d8279d04143 100644 (file)
@@ -975,6 +975,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 c0a35eb85e4eded5a0a48658394d80ac2021890b..1a4043948f13845914312311acd5715491e81e24 100644 (file)
@@ -699,6 +699,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);