]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: perfcounters: add gc retire counter
authorMatt Benjamin <mbenjamin@redhat.com>
Sat, 9 Feb 2019 20:44:08 +0000 (15:44 -0500)
committerMatt Benjamin <mbenjamin@redhat.com>
Tue, 14 May 2019 21:35:31 +0000 (17:35 -0400)
To avoid spam, counter updates are batched with the corresponding log
trim chunks.

Fixes: https://tracker.ceph.com/issues/38251
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/rgw/rgw_common.h
src/rgw/rgw_gc.cc
src/rgw/rgw_perf_counters.cc
src/rgw/rgw_perf_counters.h

index abffed3bba89531c13eeae925bc737d5f8ad0369..53873db4303055d4d4338bb8af4222e0e1ecb5f3 100644 (file)
@@ -249,7 +249,7 @@ struct req_state;
 
 typedef void *RGWAccessHandle;
 
- /* size should be the required string size + 1 */
+/* size should be the required string size + 1 */
 int gen_rand_base64(CephContext *cct, char *dest, int size);
 void gen_rand_alphanumeric(CephContext *cct, char *dest, int size);
 void gen_rand_alphanumeric_lower(CephContext *cct, char *dest, int size);
index 9fc1f03968832dbaf0fb5bf25206464c30d1e3b1..687b6a7c3587e9a5d11c63c37d0ebf1afb3d3549 100644 (file)
@@ -2,14 +2,17 @@
 // vim: ts=8 sw=2 smarttab
 
 #include "rgw_gc.h"
+
 #include "rgw_tools.h"
+#include "include/scope_guard.h"
 #include "include/rados/librados.hpp"
 #include "cls/rgw/cls_rgw_client.h"
 #include "cls/refcount/cls_refcount_client.h"
+#include "rgw_perf_counters.h"
 #include "cls/lock/cls_lock_client.h"
 #include "include/random.h"
 
-#include <list>
+#include <list> // XXX
 #include <sstream>
 
 #define dout_context g_ceph_context
@@ -255,8 +258,14 @@ public:
       " removing entries from gc log shard index=" << index << ", size=" <<
       rt.size() << ", entries=" << rt << dendl;
 
+    auto rt_guard = make_scope_guard(
+      [&]
+       {
+         rt.clear();
+       }
+      );
+
     int ret = gc->remove(index, rt, &index_io.c);
-    rt.clear();
     if (ret < 0) {
       /* we already cleared list of tags, this prevents us from
        * ballooning in case of a persistent problem
@@ -265,7 +274,10 @@ public:
        index << " ret=" << ret << dendl;
       return;
     }
-
+    if (perfcounter) {
+      /* log the count of tags retired for rate estimation */
+      perfcounter->inc(l_rgw_gc_retire, rt.size());
+    }
     ios.push_back(index_io);
   }
 
index d12daff2e14c3c4c56260de87708191c8d0e08a2..21d1a3636b443b32335f795cb3af68842479d9ab 100644 (file)
@@ -34,6 +34,8 @@ int rgw_perf_start(CephContext *cct)
   plb.add_u64_counter(l_rgw_keystone_token_cache_hit, "keystone_token_cache_hit", "Keystone token cache hits");
   plb.add_u64_counter(l_rgw_keystone_token_cache_miss, "keystone_token_cache_miss", "Keystone token cache miss");
 
+  plb.add_u64_counter(l_rgw_gc_retire, "gc_retire_object", "GC object retires");
+
   plb.add_u64_counter(l_rgw_pubsub_event_triggered, "pubsub_event_triggered", "Pubsub events with at least one topic");
   plb.add_u64_counter(l_rgw_pubsub_event_lost, "pubsub_event_lost", "Pubsub events lost");
   plb.add_u64_counter(l_rgw_pubsub_store_ok, "pubsub_store_ok", "Pubsub events successfully stored");
index 3220e5068bd80b99b9145603e01bdff2c9e5b07e..1f0b6fc316f9073a807e10960356adfcc9c495b6 100644 (file)
@@ -33,6 +33,8 @@ enum {
   l_rgw_keystone_token_cache_hit,
   l_rgw_keystone_token_cache_miss,
 
+  l_rgw_gc_retire,
+
   l_rgw_pubsub_event_triggered,
   l_rgw_pubsub_event_lost,
   l_rgw_pubsub_store_ok,