]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Add counter to peering so we can see how often we would try invalidating the... 67137/head
authorJon Bailey <jonathan.bailey1@ibm.com>
Tue, 27 Jan 2026 14:31:53 +0000 (14:31 +0000)
committerJon Bailey <jonathan.bailey1@ibm.com>
Fri, 30 Jan 2026 12:54:03 +0000 (12:54 +0000)
Signed-off-by: Jon Bailey <jonathan.bailey1@ibm.com>
(cherry picked from commit 294c36143d5f9c4cb84bbfa5b17d8cb3e66f4dd4)

src/osd/PeeringState.cc
src/osd/PeeringState.h
src/osd/osd_perf_counters.cc
src/osd/osd_perf_counters.h

index ce0e190e7969aec9c8510ea80356ee037b9f0599..cc3a1aed62a6611768bb84d27ad40531f2e1fe9b 100644 (file)
@@ -3487,6 +3487,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;
@@ -3741,6 +3742,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;
@@ -4411,6 +4415,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,
@@ -4504,10 +4514,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);
@@ -4554,7 +4569,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) {
@@ -4608,6 +4623,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 6fa89017b2e00563a69527a8944037a58cd653c4..0f6335e779b1a300f5379eb25caaccc91528209a 100644 (file)
@@ -1810,6 +1810,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 416231dbe655671362f00d1eb39ec004effe769b..d47d4459d5a24c94370b698af1cd13eee50d0340 100644 (file)
@@ -530,6 +530,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 0b3f976131250a68548b5cb2c39c8a81d7ba2133..f5f2a20d83db253a378fa4183a904744fb8ff44c 100644 (file)
@@ -255,6 +255,7 @@ enum {
   rs_getmissing_latency,
   rs_waitupthru_latency,
   rs_notrecovering_latency,
+  rs_stats_invalidated,
   rs_last,
 };