]> git.apps.os.sepia.ceph.com Git - ceph-ci.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>
Thu, 16 Aug 2018 06:16:50 +0000 (02:16 -0400)
Signed-off-by: Venky Shankar <vshankar@redhat.com>
src/mds/MDSDaemon.cc
src/mds/MDSRank.h
src/mds/SessionMap.cc
src/mds/SessionMap.h

index 98c524556d763535fdc0f895189fffb5cb20e8c6..30974291065c78a98450cd7627d3554e6c619929 100644 (file)
@@ -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;
index f2ab258a4fe21c9b6a89bab3fb6e2abf610abe5b..2cd8951a8ca6c5b65492b687b56d57cc46c74e5a 100644 (file)
@@ -224,6 +224,7 @@ class MDSRank {
     void handle_conf_change(const ConfigProxy& conf,
                             const std::set <std::string> &changed)
     {
+      sessionmap.handle_conf_change(conf, changed);
       mdcache->handle_conf_change(conf, changed, *mdsmap);
       purge_queue.handle_conf_change(conf, changed, *mdsmap);
     }
index e64f45245bb0caad601dbc6b020a291a9f75b51b..50976f0d42f30885de8962a46b9a072e0c63482a 100644 (file)
@@ -976,6 +976,29 @@ void SessionMap::hit_session(Session *session) {
   session->hit_session();
 }
 
+void SessionMap::handle_conf_change(const ConfigProxy &conf,
+                                    const std::set <std::string> &changed) {
+  if (changed.count("mds_request_load_average_decay_rate")) {
+    decay_rate = g_conf().get_val<double>("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<std::string> &args,
     std::stringstream *ss)
index 8a43e332f467ffcf1ccc805ebd3a3721096e2d6c..549e628298d305054e7085079e0aa235671e4656 100644 (file)
@@ -715,6 +715,8 @@ private:
 
 public:
   void hit_session(Session *session);
+  void handle_conf_change(const ConfigProxy &conf,
+                          const std::set <std::string> &changed);
 };
 
 std::ostream& operator<<(std::ostream &out, const Session &s);