From: Jon Bailey Date: Tue, 27 Jan 2026 14:31:53 +0000 (+0000) Subject: Add counter to peering so we can see how often we would try invalidating the stats. X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6f195f5d88cbed10cf972f73d6acbe72bdcd51b8;p=ceph-ci.git Add counter to peering so we can see how often we would try invalidating the stats. Signed-off-by: Jon Bailey --- diff --git a/src/osd/PeeringState.cc b/src/osd/PeeringState.cc index 8631043e251..0017b21f004 100644 --- a/src/osd/PeeringState.cc +++ b/src/osd/PeeringState.cc @@ -3504,6 +3504,7 @@ void PeeringState::proc_master_log( invalidate_stats = true; } info.stats.stats_invalid |= invalidate_stats; + increment_stats_invalidations_counter(invalidate_stats); peer_info[from] = oinfo; psdout(10) << " peer osd." << from << " now " << oinfo << " " << omissing << dendl; @@ -3758,6 +3759,9 @@ void PeeringState::split_into( child->info.last_epoch_started = info.last_epoch_started; child->info.last_interval_started = info.last_interval_started; + increment_stats_invalidations_counter(info.stats.stats_invalid); + increment_stats_invalidations_counter(child->info.stats.stats_invalid); + // There can't be recovery/backfill going on now int primary, up_primary; vector newup, newacting; @@ -4428,6 +4432,12 @@ std::optional PeeringState::prepare_stats_for_publish( } } +void PeeringState::increment_stats_invalidations_counter(bool invalidation_state) { + if (invalidation_state) { + pl->get_peering_perf().inc(rs_stats_invalidated); + } +} + void PeeringState::init( int role, const vector& newup, int new_up_primary, @@ -4521,10 +4531,15 @@ void PeeringState::dump_peering_state(Formatter *f) void PeeringState::update_stats( std::function f, ObjectStore::Transaction *t) { + bool previous_stats_invalidation = info.stats.stats_invalid; if (f(info.history, info.stats)) { pl->publish_stats_to_osd(); } + if (previous_stats_invalidation != info.stats.stats_invalid) { + increment_stats_invalidations_counter(info.stats.stats_invalid); + } + if (t) { dirty_info = true; write_if_dirty(*t); @@ -4571,7 +4586,7 @@ bool PeeringState::append_log_entries_update_missing( info.last_complete = info.last_update; } info.stats.stats_invalid = info.stats.stats_invalid || invalidate_stats; - + increment_stats_invalidations_counter(invalidate_stats); psdout(20) << "trim_to bool = " << bool(trim_to) << " trim_to = " << (trim_to ? *trim_to : eversion_t()) << dendl; if (trim_to) { @@ -4625,6 +4640,7 @@ void PeeringState::merge_new_log_entries( dpp); pinfo.last_update = info.last_update; pinfo.stats.stats_invalid = pinfo.stats.stats_invalid || invalidate_stats; + increment_stats_invalidations_counter(invalidate_stats); rebuild_missing = rebuild_missing || invalidate_stats; } diff --git a/src/osd/PeeringState.h b/src/osd/PeeringState.h index 9e386188ba4..cfc3d9ae96e 100644 --- a/src/osd/PeeringState.h +++ b/src/osd/PeeringState.h @@ -1812,6 +1812,7 @@ private: void update_blocked_by(); void update_calc_stats(); + void increment_stats_invalidations_counter(bool invalidation_state); void add_log_entry(const pg_log_entry_t& e, ObjectStore::Transaction &t, bool applied); diff --git a/src/osd/osd_perf_counters.cc b/src/osd/osd_perf_counters.cc index 443bd2d478d..cbd7bb88b9c 100644 --- a/src/osd/osd_perf_counters.cc +++ b/src/osd/osd_perf_counters.cc @@ -536,6 +536,7 @@ PerfCounters *build_recoverystate_perf(CephContext *cct) { rs_perf.add_time_avg(rs_getmissing_latency, "getmissing_latency", "Getmissing recovery state latency"); rs_perf.add_time_avg(rs_waitupthru_latency, "waitupthru_latency", "Waitupthru recovery state latency"); rs_perf.add_time_avg(rs_notrecovering_latency, "notrecovering_latency", "Notrecovering recovery state latency"); + rs_perf.add_u64_counter(rs_stats_invalidated, "stats_invalidated", "Number of times pg stats received invalidations"); return rs_perf.create_perf_counters(); } diff --git a/src/osd/osd_perf_counters.h b/src/osd/osd_perf_counters.h index 58afec5745e..dc23919a34f 100644 --- a/src/osd/osd_perf_counters.h +++ b/src/osd/osd_perf_counters.h @@ -257,6 +257,7 @@ enum { rs_getmissing_latency, rs_waitupthru_latency, rs_notrecovering_latency, + rs_stats_invalidated, rs_last, };