]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/scrub: add mon scrub latency 58473/head
authoryitegu <yitegu0@gmail.com>
Tue, 9 Jul 2024 08:31:28 +0000 (16:31 +0800)
committeryitegu <yitegu0@gmail.com>
Tue, 9 Jul 2024 08:31:28 +0000 (16:31 +0800)
If mon store.db very big, scrub will be a very
time-consuming operation.

Fixes: https://tracker.ceph.com/issues/66873
Signed-off-by: Yite Gu <yitegu0@gmail.com>
src/mon/Monitor.cc
src/mon/Monitor.h

index a70bfbe33c9deb8e5fa0960310c6fe9589d178fb..2c27c58560e4fb61386036e6fb841a8a9cb9d8e8 100644 (file)
@@ -5661,10 +5661,13 @@ void Monitor::handle_scrub(MonOpRequestRef op)
       if (scrub_result.size() == quorum.size()) {
         scrub_check_results();
         scrub_result.clear();
-        if (scrub_state->finished)
+        if (scrub_state->finished) {
+          const utime_t lat = ceph_clock_now() - scrub_state->start;
+          dout(10) << __func__ << " mon scrub latency: " << lat << dendl;
           scrub_finish();
-        else
+        } else {
           scrub();
+        }
       }
     }
     break;
index 13afacafde7dd6b01ce4450499eb3a121d48eaf3..f2385dd24afb65014b9a01bbac7a34ab53114be5 100644 (file)
@@ -341,8 +341,10 @@ private:
   struct ScrubState {
     std::pair<std::string,std::string> last_key; ///< last scrubbed key
     bool finished;
+    const utime_t start;
 
-    ScrubState() : finished(false) { }
+    ScrubState() : finished(false),
+                   start(ceph_clock_now()) { }
     virtual ~ScrubState() { }
   };
   std::shared_ptr<ScrubState> scrub_state; ///< keeps track of current scrub