From 752e8cf8f38e8a2a699cf0f97b00c64795798354 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Wed, 31 Aug 2022 15:20:25 -0700 Subject: [PATCH] crimson/osd: move perf counter ownership to OSDSingletonState Later, we'll want to create a properly sharded implentation that avoids barriers. Signed-off-by: Samuel Just --- src/crimson/osd/pg_shard_manager.cc | 7 ++++++- src/crimson/osd/shard_services.cc | 17 ++++++++++------- src/crimson/osd/shard_services.h | 4 ++++ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/crimson/osd/pg_shard_manager.cc b/src/crimson/osd/pg_shard_manager.cc index 84b17e721f9..9913d966f63 100644 --- a/src/crimson/osd/pg_shard_manager.cc +++ b/src/crimson/osd/pg_shard_manager.cc @@ -27,7 +27,12 @@ seastar::future<> PGShardManager::start( ).then([this, whoami, &store] { ceph::mono_time startup_time = ceph::mono_clock::now(); return shard_services.start( - std::ref(osd_singleton_state), whoami, startup_time, std::ref(store)); + std::ref(osd_singleton_state), + whoami, + startup_time, + osd_singleton_state.local().perf, + osd_singleton_state.local().recoverystate_perf, + std::ref(store)); }); } diff --git a/src/crimson/osd/shard_services.cc b/src/crimson/osd/shard_services.cc index f9f0cb393b0..bc5a02c3d3c 100644 --- a/src/crimson/osd/shard_services.cc +++ b/src/crimson/osd/shard_services.cc @@ -36,22 +36,19 @@ namespace crimson::osd { PerShardState::PerShardState( int whoami, ceph::mono_time startup_time, + PerfCounters *perf, + PerfCounters *recoverystate_perf, crimson::os::FuturizedStore &store) : whoami(whoami), store(store), + perf(perf), recoverystate_perf(recoverystate_perf), throttler(crimson::common::local_conf()), obc_registry(crimson::common::local_conf()), next_tid( static_cast(seastar::this_shard_id()) << (std::numeric_limits::digits - 8)), startup_time(startup_time) -{ - perf = build_osd_logger(&cct); - cct.get_perfcounters_collection()->add(perf); - - recoverystate_perf = build_recoverystate_perf(&cct); - cct.get_perfcounters_collection()->add(recoverystate_perf); -} +{} seastar::future<> PerShardState::stop_pgs() { @@ -130,6 +127,12 @@ OSDSingletonState::OSDSingletonState( { crimson::common::local_conf().add_observer(this); osdmaps[0] = boost::make_local_shared(); + + perf = build_osd_logger(&cct); + cct.get_perfcounters_collection()->add(perf); + + recoverystate_perf = build_recoverystate_perf(&cct); + cct.get_perfcounters_collection()->add(recoverystate_perf); } seastar::future<> OSDSingletonState::send_to_osd( diff --git a/src/crimson/osd/shard_services.h b/src/crimson/osd/shard_services.h index b5f9a388c61..63e251a1366 100644 --- a/src/crimson/osd/shard_services.h +++ b/src/crimson/osd/shard_services.h @@ -145,6 +145,8 @@ public: PerShardState( int whoami, ceph::mono_time startup_time, + PerfCounters *perf, + PerfCounters *recoverystate_perf, crimson::os::FuturizedStore &store); }; @@ -172,6 +174,8 @@ private: const int whoami; crimson::common::CephContext cct; + PerfCounters *perf = nullptr; + PerfCounters *recoverystate_perf = nullptr; OSDState osd_state; -- 2.39.5