From 77a8e836ca4740c2318033a06335595443337de6 Mon Sep 17 00:00:00 2001 From: Matt Benjamin Date: Sat, 9 Feb 2019 15:44:08 -0500 Subject: [PATCH] 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 --- src/rgw/rgw_common.h | 2 +- src/rgw/rgw_gc.cc | 18 +++++++++++++++--- src/rgw/rgw_perf_counters.cc | 2 ++ src/rgw/rgw_perf_counters.h | 2 ++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index abffed3bba8..53873db4303 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -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); diff --git a/src/rgw/rgw_gc.cc b/src/rgw/rgw_gc.cc index 9fc1f039688..687b6a7c358 100644 --- a/src/rgw/rgw_gc.cc +++ b/src/rgw/rgw_gc.cc @@ -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 +#include // XXX #include #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); } diff --git a/src/rgw/rgw_perf_counters.cc b/src/rgw/rgw_perf_counters.cc index d12daff2e14..21d1a3636b4 100644 --- a/src/rgw/rgw_perf_counters.cc +++ b/src/rgw/rgw_perf_counters.cc @@ -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"); diff --git a/src/rgw/rgw_perf_counters.h b/src/rgw/rgw_perf_counters.h index 3220e5068bd..1f0b6fc316f 100644 --- a/src/rgw/rgw_perf_counters.h +++ b/src/rgw/rgw_perf_counters.h @@ -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, -- 2.39.5