]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: start to trim cache when mds enters clientreplay state 26422/head
authorYan, Zheng <zyan@redhat.com>
Thu, 14 Feb 2019 08:10:57 +0000 (16:10 +0800)
committerYan, Zheng <zyan@redhat.com>
Thu, 14 Feb 2019 09:52:51 +0000 (17:52 +0800)
MDS scans strays when it enters clientreplay state. MDS may load
lots of objects into its cache.

Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
src/mds/MDSRank.cc

index 8988a5d87002ebbbec37a03231f55068f4bcb7b8..2a480da6c6b761449f3e7015d34dcbd830dfa626 100644 (file)
@@ -727,27 +727,28 @@ void MDSRankDispatcher::tick()
   sessionmap.update_average_session_age();
 
   if (is_active() || is_stopping()) {
-    server->recall_client_state(nullptr, Server::RecallFlags::ENFORCE_MAX);
-    mdcache->trim();
-    mdcache->trim_client_leases();
-    mdcache->check_memory_usage();
     mdlog->trim();  // NOT during recovery!
   }
 
-  // log
-  if (logger) {
-    logger->set(l_mds_subtrees, mdcache->num_subtrees());
-
-    mdcache->log_stat();
-  }
-
   // ...
   if (is_clientreplay() || is_active() || is_stopping()) {
+    mdcache->trim_client_leases();
+    mdcache->trim();
+    mdcache->check_memory_usage();
+
+    server->recall_client_state(nullptr, Server::RecallFlags::ENFORCE_MAX);
+
     server->find_idle_sessions();
     server->evict_cap_revoke_non_responders();
     locker->tick();
   }
 
+  // log
+  if (logger) {
+    logger->set(l_mds_subtrees, mdcache->num_subtrees());
+    mdcache->log_stat();
+  }
+
   if (is_reconnect())
     server->reconnect_tick();
   if (is_clientreplay())