]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore: bring latency logging to omap_iterate()
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Sat, 12 Oct 2024 19:21:06 +0000 (19:21 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 14 Jan 2025 12:50:36 +0000 (12:50 +0000)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
(cherry picked from commit d2531a0baf41428e07e6a79db0f6867f9a3cbd6f)

src/os/bluestore/BlueStore.cc

index 1efd4cc1a19190687f68496b91638beafe7f9032..0fd122cdce1761690bd90847cc7617d7982b5194 100644 (file)
@@ -13498,15 +13498,27 @@ int BlueStore::omap_iterate(
   {
     std::string key;
     o->get_omap_key(start_from.seek_position, &key);
+    auto start = ceph::mono_clock::now();
     if (start_from.seek_type == omap_iter_seek_t::LOWER_BOUND) {
       it->lower_bound(key);
+      c->store->log_latency(
+        __func__,
+        l_bluestore_omap_lower_bound_lat,
+        ceph::mono_clock::now() - start,
+        c->store->cct->_conf->bluestore_log_omap_iterator_age);
     } else {
       it->upper_bound(key);
+      c->store->log_latency(
+        __func__,
+        l_bluestore_omap_upper_bound_lat,
+        ceph::mono_clock::now() - start,
+        c->store->cct->_conf->bluestore_log_omap_iterator_age);
     }
   }
 
   // iterate!
   std::string tail;
+  ceph::timespan next_lat_acc{0};
   o->get_omap_tail(&tail);
   while (it->valid()) {
     std::string user_key;
@@ -13519,12 +13531,17 @@ int BlueStore::omap_iterate(
     if (ret == omap_iter_ret_t::STOP) {
       break;
     } else if (ret == omap_iter_ret_t::NEXT) {
+      ceph::time_guard<ceph::mono_clock>{next_lat_acc};
       it->next();
     } else {
       ceph_abort();
     }
   }
-
+  c->store->log_latency(
+    __func__,
+    l_bluestore_omap_next_lat,
+    next_lat_acc,
+    c->store->cct->_conf->bluestore_log_omap_iterator_age);
   return 0;
 }