From: Matt Benjamin Date: Sat, 9 Feb 2019 20:44:08 +0000 (-0500) Subject: rgw: perfcounters: add gc retire counter X-Git-Tag: v13.2.7~79^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=addb0a06214089d884864977998da4e335b60021;p=ceph.git rgw: perfcounters: add gc retire counter 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 (cherry picked from commit 77a8e836ca4740c2318033a06335595443337de6) Conflicts: src/rgw/rgw_common.h src/rgw/rgw_gc.cc src/rgw/rgw_perf_counters.cc src/rgw/rgw_perf_counters.h - no "rgw_perf_counters.{cc,h}" in mimic; made the changes in rgw_common.{cc,h} instead --- diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index 415d0f10637..c30b6af20bc 100644 --- a/src/rgw/rgw_common.cc +++ b/src/rgw/rgw_common.cc @@ -164,6 +164,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"); + perfcounter = plb.create_perf_counters(); cct->get_perfcounters_collection()->add(perfcounter); return 0; diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index 743a45de7db..53ce38816e9 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -262,11 +262,13 @@ enum { l_rgw_keystone_token_cache_hit, l_rgw_keystone_token_cache_miss, + l_rgw_gc_retire, + l_rgw_last, }; - /* 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); diff --git a/src/rgw/rgw_gc.cc b/src/rgw/rgw_gc.cc index 52c3b8ea282..c7bb945e2d6 100644 --- a/src/rgw/rgw_gc.cc +++ b/src/rgw/rgw_gc.cc @@ -2,13 +2,15 @@ // vim: ts=8 sw=2 smarttab #include "rgw_gc.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 "cls/lock/cls_lock_client.h" #include "include/random.h" -#include +#include // XXX #include #define dout_context g_ceph_context @@ -270,8 +272,14 @@ public: " removing entries from gc log shard index=" << index << ", size=" << rt.size() << ", entries=[" << lister() << "]" << 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 @@ -280,7 +288,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); }