]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Add duplicate log size to pg dump stats and query
authorNitzanMordhai <nmordech@redhat.com>
Wed, 8 Jun 2022 05:55:12 +0000 (05:55 +0000)
committerNitzan Mordechai <nmordech@redhat.com>
Sun, 28 Aug 2022 06:30:38 +0000 (09:30 +0300)
Add a new column LOG_DUPS, to the pg dump stats and log_dups_size to pg query
that will show the size of dups entries in pg log.

Signed-off-by: Nitzan Mordechai <nmordech@redhat.com>
(cherry picked from commit 7b4acb7fd90f16ea625b0ba06384c8b18b5906b5)

src/osd/PeeringState.cc
src/osd/osd_types.cc
src/osd/osd_types.h

index 68b8d22259955dfb82455429b25b3ed8abd8fbc3..7abf2ca7d442c19e9d6dd5bda4dc376dba9942f8 100644 (file)
@@ -3514,6 +3514,7 @@ void PeeringState::update_calc_stats()
   info.stats.last_epoch_clean = info.history.last_epoch_clean;
 
   info.stats.log_size = pg_log.get_head().version - pg_log.get_tail().version;
+  info.stats.log_dups_size = pg_log.get_log().dups.size();
   info.stats.ondisk_log_size = info.stats.log_size;
   info.stats.log_start = pg_log.get_tail();
   info.stats.ondisk_log_start = pg_log.get_tail();
index 3a92591409f4217497d5c3f6a28dd11a50b2aedd..0de3cca3118d8a27300af470943e03e5430b58a9 100644 (file)
@@ -2855,6 +2855,7 @@ void pg_stat_t::dump(Formatter *f) const
   f->dump_stream("last_clean_scrub_stamp") << last_clean_scrub_stamp;
   f->dump_int("objects_scrubbed", objects_scrubbed);
   f->dump_int("log_size", log_size);
+  f->dump_int("log_dups_size", log_dups_size);
   f->dump_int("ondisk_log_size", ondisk_log_size);
   f->dump_bool("stats_invalid", stats_invalid);
   f->dump_bool("dirty_stats_invalid", dirty_stats_invalid);
@@ -2964,7 +2965,7 @@ bool operator==(const pg_scrubbing_status_t& l, const pg_scrubbing_status_t& r)
 
 void pg_stat_t::encode(ceph::buffer::list &bl) const
 {
-  ENCODE_START(28, 22, bl);
+  ENCODE_START(29, 22, bl);
   encode(version, bl);
   encode(reported_seq, bl);
   encode(reported_epoch, bl);
@@ -3023,6 +3024,7 @@ void pg_stat_t::encode(ceph::buffer::list &bl) const
   encode(scrub_duration, bl);
   encode(objects_trimmed, bl);
   encode(snaptrim_duration, bl);
+  encode(log_dups_size, bl);
 
   ENCODE_FINISH(bl);
 }
@@ -3031,7 +3033,7 @@ void pg_stat_t::decode(ceph::buffer::list::const_iterator &bl)
 {
   bool tmp;
   uint32_t old_state;
-  DECODE_START(28, bl);
+  DECODE_START(29, bl);
   decode(version, bl);
   decode(reported_seq, bl);
   decode(reported_epoch, bl);
@@ -3118,6 +3120,9 @@ void pg_stat_t::decode(ceph::buffer::list::const_iterator &bl)
       decode(objects_trimmed, bl);
       decode(snaptrim_duration, bl);
     }
+    if (struct_v >= 29) {
+      decode(log_dups_size, bl);
+    }
   }
   DECODE_FINISH(bl);
 }
@@ -3210,6 +3215,7 @@ bool operator==(const pg_stat_t& l, const pg_stat_t& r)
     l.stats == r.stats &&
     l.stats_invalid == r.stats_invalid &&
     l.log_size == r.log_size &&
+    l.log_dups_size == r.log_dups_size &&
     l.ondisk_log_size == r.ondisk_log_size &&
     l.up == r.up &&
     l.acting == r.acting &&
index 55c1bc582b49f36daf116f46a0233690c5632ac2..dc622795ac22031891ee5392caee64a63ce8f8ba 100644 (file)
@@ -2248,6 +2248,7 @@ struct pg_stat_t {
   object_stat_collection_t stats;
 
   int64_t log_size;
+  int64_t log_dups_size;
   int64_t ondisk_log_size;    // >= active_log_size
   int64_t objects_scrubbed;
   double scrub_duration;
@@ -2292,7 +2293,8 @@ struct pg_stat_t {
       state(0),
       created(0), last_epoch_clean(0),
       parent_split_bits(0),
-      log_size(0), ondisk_log_size(0),
+      log_size(0), log_dups_size(0),
+      ondisk_log_size(0),
       objects_scrubbed(0),
       scrub_duration(0),
       mapping_epoch(0),
@@ -2347,6 +2349,7 @@ struct pg_stat_t {
   void add(const pg_stat_t& o) {
     stats.add(o.stats);
     log_size += o.log_size;
+    log_dups_size += o.log_dups_size;
     ondisk_log_size += o.ondisk_log_size;
     snaptrimq_len = std::min((uint64_t)snaptrimq_len + o.snaptrimq_len,
                              (uint64_t)(1ull << 31));
@@ -2355,6 +2358,7 @@ struct pg_stat_t {
   void sub(const pg_stat_t& o) {
     stats.sub(o.stats);
     log_size -= o.log_size;
+    log_dups_size -= o.log_dups_size;
     ondisk_log_size -= o.ondisk_log_size;
     if (o.snaptrimq_len < snaptrimq_len) {
       snaptrimq_len -= o.snaptrimq_len;