]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/: add counters for queue latency for PGRecovery[Context]
authorSamuel Just <sjust@redhat.com>
Thu, 6 Apr 2023 21:15:02 +0000 (14:15 -0700)
committerSridhar Seshasayee <sseshasa@redhat.com>
Mon, 8 May 2023 09:16:25 +0000 (14:46 +0530)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/osd/OSD.h
src/osd/osd_perf_counters.cc
src/osd/osd_perf_counters.h
src/osd/scheduler/OpSchedulerItem.cc
src/osd/scheduler/OpSchedulerItem.h

index a1bb82f07b70153b7e24d079875ed6c5d2854c46..4326c4b5b018ed8654d5effab078ac04a89077af 100644 (file)
@@ -1606,6 +1606,7 @@ protected:
   friend class ceph::osd::scheduler::PGOpItem;
   friend class ceph::osd::scheduler::PGPeeringItem;
   friend class ceph::osd::scheduler::PGRecovery;
+  friend class ceph::osd::scheduler::PGRecoveryContext;
   friend class ceph::osd::scheduler::PGRecoveryMsg;
   friend class ceph::osd::scheduler::PGDelete;
 
index b1c1413bf61d9dea1cfdf9e4421fafb729b6fa9e..1767cbec1ed9c7a474107187d2c76805a0f0f193 100644 (file)
@@ -187,6 +187,15 @@ PerfCounters *build_osd_logger(CephContext *cct) {
     "l_osd_recovery_scan_queue_latency",
     "MOSDPGScan queue latency");
 
+  osd_plb.add_time_avg(
+    l_osd_recovery_queue_lat,
+    "l_osd_recovery_queue_latency",
+    "PGRecovery queue latency");
+  osd_plb.add_time_avg(
+    l_osd_recovery_context_queue_lat,
+    "l_osd_recovery_context_queue_latency",
+    "PGRecoveryContext queue latency");
+
   osd_plb.add_u64(l_osd_loadavg, "loadavg", "CPU load");
   osd_plb.add_u64(
     l_osd_cached_crc, "cached_crc", "Total number getting crc from crc_cache");
index f8af01e0e4f564e3d28f32a6d02346a05788b6a3..93fef68feb51f9087ff25ff62cafddfb045bde2c 100644 (file)
@@ -65,6 +65,9 @@ enum {
   l_osd_recovery_backfill_remove_queue_lat,
   l_osd_recovery_scan_queue_lat,
 
+  l_osd_recovery_queue_lat,
+  l_osd_recovery_context_queue_lat,
+
   l_osd_loadavg,
   l_osd_cached_crc,
   l_osd_cached_crc_adjusted,
index f2cc3e3fd0217c506cbd86fe8beb86a7bd49e103..943c6c88ec1c3ed1fbf3ef1540b49544b33d1404 100644 (file)
@@ -225,6 +225,9 @@ void PGRecovery::run(
   PGRef& pg,
   ThreadPool::TPHandle &handle)
 {
+  osd->logger->tinc(
+    l_osd_recovery_queue_lat,
+    time_queued - ceph_clock_now());
   osd->do_recovery(pg.get(), epoch_queued, reserved_pushes, priority, handle);
   pg->unlock();
 }
@@ -235,6 +238,9 @@ void PGRecoveryContext::run(
   PGRef& pg,
   ThreadPool::TPHandle &handle)
 {
+  osd->logger->tinc(
+    l_osd_recovery_context_queue_lat,
+    time_queued - ceph_clock_now());
   c.release()->complete(handle);
   pg->unlock();
 }
index e3f3a1a67af0c3c40cd77fdfabe7afc4fc1f7827..62d258b34ab7b054fe07fc1df5b421e6f25b4d70 100644 (file)
@@ -500,6 +500,7 @@ class PGScrubChunkIsFree : public PGScrubItem {
 };
 
 class PGRecovery : public PGOpQueueable {
+  utime_t time_queued;
   epoch_t epoch_queued;
   uint64_t reserved_pushes;
   int priority;
@@ -510,6 +511,7 @@ public:
     uint64_t reserved_pushes,
     int priority)
     : PGOpQueueable(pg),
+      time_queued(ceph_clock_now()),
       epoch_queued(epoch_queued),
       reserved_pushes(reserved_pushes),
       priority(priority) {}
@@ -530,6 +532,7 @@ public:
 };
 
 class PGRecoveryContext : public PGOpQueueable {
+  utime_t time_queued;
   std::unique_ptr<GenContext<ThreadPool::TPHandle&>> c;
   epoch_t epoch;
   int priority;
@@ -538,6 +541,7 @@ public:
                    GenContext<ThreadPool::TPHandle&> *c, epoch_t epoch,
                    int priority)
     : PGOpQueueable(pgid),
+      time_queued(ceph_clock_now()),
       c(c), epoch(epoch), priority(priority) {}
   std::ostream &print(std::ostream &rhs) const final {
     return rhs << "PGRecoveryContext(pgid=" << get_pgid()