From 7b4acb7fd90f16ea625b0ba06384c8b18b5906b5 Mon Sep 17 00:00:00 2001 From: NitzanMordhai Date: Wed, 8 Jun 2022 05:55:12 +0000 Subject: [PATCH] osd: Add duplicate log size to pg dump stats and query 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 --- src/osd/PeeringState.cc | 1 + src/osd/osd_types.cc | 10 ++++++++-- src/osd/osd_types.h | 6 +++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/osd/PeeringState.cc b/src/osd/PeeringState.cc index c098040fecc..88b40d994c6 100644 --- a/src/osd/PeeringState.cc +++ b/src/osd/PeeringState.cc @@ -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(); diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 6361b80c947..e0d3d1437f9 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -2862,6 +2862,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); @@ -2978,7 +2979,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); @@ -3037,6 +3038,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); } @@ -3045,7 +3047,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); @@ -3132,6 +3134,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); } @@ -3224,6 +3229,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 && diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index bfec916ada4..d1b9a7e9220 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -2223,6 +2223,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; @@ -2267,7 +2268,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), @@ -2322,6 +2324,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)); @@ -2330,6 +2333,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; -- 2.39.5