]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
Add counter to peering so we can see how often we would try invalidating the stats.
authorJon Bailey <jonathan.bailey1@ibm.com>
Tue, 27 Jan 2026 14:31:53 +0000 (14:31 +0000)
committerJon Bailey <jonathan.bailey1@ibm.com>
Thu, 29 Jan 2026 09:55:32 +0000 (09:55 +0000)
Signed-off-by: Jon Bailey <jonathan.bailey1@ibm.com>
src/osd/PeeringState.cc
src/osd/PeeringState.h
src/osd/osd_perf_counters.cc
src/osd/osd_perf_counters.h

index 8631043e2510a41c20577bcb8091eb11cf30080c..0017b21f00477661ee747c95dd755d48db0a7974 100644 (file)
@@ -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<int> newup, newacting;
@@ -4428,6 +4432,12 @@ std::optional<pg_stat_t> 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<int>& newup, int new_up_primary,
@@ -4521,10 +4531,15 @@ void PeeringState::dump_peering_state(Formatter *f)
 void PeeringState::update_stats(
   std::function<bool(pg_history_t &, pg_stat_t &)> 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;
   }
 
index 9e386188ba46d6112799da98e64418d7610e58c8..cfc3d9ae96e0fbb994be46ad97ac183206ac68f0 100644 (file)
@@ -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);
 
index 443bd2d478d12dff56b98f2a7ce730407298fb81..cbd7bb88b9c7fca2d9b7f581a4cfad91169f79d0 100644 (file)
@@ -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();
 }
index 58afec5745e1ad18fbbb0d62a6d340771d3c3e67..dc23919a34fa5c11a565109c0a143cfb0bf2e905 100644 (file)
@@ -257,6 +257,7 @@ enum {
   rs_getmissing_latency,
   rs_waitupthru_latency,
   rs_notrecovering_latency,
+  rs_stats_invalidated,
   rs_last,
 };