]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osdc: add replica read perf counters to Objecter
authorSamuel Just <sjust@redhat.com>
Tue, 9 Apr 2024 00:24:19 +0000 (00:24 +0000)
committerSamuel Just <sjust@redhat.com>
Sat, 19 Oct 2024 01:40:12 +0000 (01:40 +0000)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/osdc/Objecter.cc

index d881c6e1dc3869380ac5487f01a21ab3f7828d3f..087b623333bb7e8ada68eabc51f04d46f8cf1b1a 100644 (file)
@@ -180,6 +180,10 @@ enum {
   l_osdc_osdop_omap_rd,
   l_osdc_osdop_omap_del,
 
+  l_osdc_replica_read_sent,
+  l_osdc_replica_read_bounced,
+  l_osdc_replica_read_completed,
+
   l_osdc_last,
 };
 
@@ -378,6 +382,13 @@ void Objecter::init()
     pcb.add_u64_counter(l_osdc_osdop_omap_del, "omap_del",
                        "OSD OMAP delete operations");
 
+    pcb.add_u64_counter(l_osdc_replica_read_sent, "replica_read_sent",
+                       "Operations sent to replica");
+    pcb.add_u64_counter(l_osdc_replica_read_bounced, "replica_read_bounced",
+                       "Operations bounced by replica to be resent to primary");
+    pcb.add_u64_counter(l_osdc_replica_read_completed, "replica_read_completed",
+                       "Operations completed by replica");
+
     logger = pcb.create_perf_counters();
     cct->get_perfcounters_collection()->add(logger);
   }
@@ -2328,6 +2339,10 @@ void Objecter::_send_op_account(Op *op)
     ldout(cct, 20) << " note: not requesting reply" << dendl;
   }
 
+  if (op->target.used_replica) {
+    logger->inc(l_osdc_replica_read_sent);
+  }
+
   logger->inc(l_osdc_op_active);
   logger->inc(l_osdc_op);
   logger->inc(l_osdc_oplen_avg, op->ops.size());
@@ -3477,6 +3492,15 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m)
     return;
   }
 
+  if (op->target.flags & (CEPH_OSD_FLAG_BALANCE_READS |
+                         CEPH_OSD_FLAG_LOCALIZE_READS)) {
+    if (rc == -EAGAIN) {
+      logger->inc(l_osdc_replica_read_bounced);
+    } else {
+      logger->inc(l_osdc_replica_read_completed);
+    }
+  }
+
   if (rc == -EAGAIN) {
     ldout(cct, 7) << " got -EAGAIN, resubmitting" << dendl;
     if (op->has_completion())