From 38e74cfe96bec00253b8818301425ddf7c274cad Mon Sep 17 00:00:00 2001 From: avanthakkar Date: Tue, 19 Sep 2023 15:50:10 +0530 Subject: [PATCH] cephadm/rgw: make rgw perf counters cache and it's size configurable Fixes: https://tracker.ceph.com/issues/62877 Signed-off-by: avanthakkar --- .../mgr/cephadm/services/cephadmservice.py | 34 ++++++++++++++++++- .../ceph/deployment/service_spec.py | 15 +++++++- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/pybind/mgr/cephadm/services/cephadmservice.py b/src/pybind/mgr/cephadm/services/cephadmservice.py index f1d405edda0b..c2cf64475e0b 100644 --- a/src/pybind/mgr/cephadm/services/cephadmservice.py +++ b/src/pybind/mgr/cephadm/services/cephadmservice.py @@ -1022,14 +1022,46 @@ class RgwService(CephService): args.extend(spec.rgw_frontend_extra_args) frontend = f'{ftype} {" ".join(args)}' + daemon_name = utils.name_to_config_section(daemon_spec.name()) ret, out, err = self.mgr.check_mon_command({ 'prefix': 'config set', - 'who': utils.name_to_config_section(daemon_spec.name()), + 'who': daemon_name, 'name': 'rgw_frontends', 'value': frontend }) + if spec.rgw_user_counters_cache: + ret, out, err = self.mgr.check_mon_command({ + 'prefix': 'config set', + 'who': daemon_name, + 'name': 'rgw_user_counters_cache', + 'value': 'true', + }) + if spec.rgw_bucket_counters_cache: + ret, out, err = self.mgr.check_mon_command({ + 'prefix': 'config set', + 'who': daemon_name, + 'name': 'rgw_bucket_counters_cache', + 'value': 'true', + }) + + if spec.rgw_user_counters_cache_size: + ret, out, err = self.mgr.check_mon_command({ + 'prefix': 'config set', + 'who': daemon_name, + 'name': 'rgw_user_counters_cache_size', + 'value': str(spec.rgw_user_counters_cache_size), + }) + + if spec.rgw_bucket_counters_cache_size: + ret, out, err = self.mgr.check_mon_command({ + 'prefix': 'config set', + 'who': daemon_name, + 'name': 'rgw_bucket_counters_cache_size', + 'value': str(spec.rgw_bucket_counters_cache_size), + }) + daemon_spec.keyring = keyring daemon_spec.final_config, daemon_spec.deps = self.generate_config(daemon_spec) diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index cb81cf7b5c8b..4432d1c9f5f0 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -1167,7 +1167,11 @@ class RGWSpec(ServiceSpec): custom_configs: Optional[List[CustomConfig]] = None, rgw_realm_token: Optional[str] = None, update_endpoints: Optional[bool] = False, - zone_endpoints: Optional[str] = None # commad separated endpoints list + zone_endpoints: Optional[str] = None, # comma separated endpoints list + rgw_user_counters_cache: Optional[bool] = False, + rgw_user_counters_cache_size: Optional[int] = None, + rgw_bucket_counters_cache: Optional[bool] = False, + rgw_bucket_counters_cache_size: Optional[int] = None ): assert service_type == 'rgw', service_type @@ -1208,6 +1212,15 @@ class RGWSpec(ServiceSpec): self.update_endpoints = update_endpoints self.zone_endpoints = zone_endpoints + #: To track op metrics by user config value rgw_user_counters_cache must be set to true + self.rgw_user_counters_cache = rgw_user_counters_cache + #: Used to set number of entries in each cache of user counters + self.rgw_user_counters_cache_size = rgw_user_counters_cache_size + #: To track op metrics by bucket config value rgw_bucket_counters_cache must be set to true + self.rgw_bucket_counters_cache = rgw_bucket_counters_cache + #: Used to set number of entries in each cache of bucket counters + self.rgw_bucket_counters_cache_size = rgw_bucket_counters_cache_size + def get_port_start(self) -> List[int]: return [self.get_port()] -- 2.47.3