From: Yingxin Cheng Date: Fri, 13 May 2022 09:13:17 +0000 (+0800) Subject: crimson/os/seastore/segment_cleaner: add metrics about journal sizes X-Git-Tag: v18.0.0~879^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=29558b3dcd7f379b660609955d9d39d5fea720c0;p=ceph.git crimson/os/seastore/segment_cleaner: add metrics about journal sizes Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/segment_cleaner.cc b/src/crimson/os/seastore/segment_cleaner.cc index ead4f7ec72c9..4463de68dca9 100644 --- a/src/crimson/os/seastore/segment_cleaner.cc +++ b/src/crimson/os/seastore/segment_cleaner.cc @@ -501,6 +501,13 @@ void SegmentCleaner::register_metrics() [this] { return get_unavailable_unused_bytes(); }, sm::description("the size of the space is unavailable and not alive")), + sm::make_counter("dirty_journal_bytes", + [this] { return get_dirty_journal_size(); }, + sm::description("the size of the journal for dirty extents")), + sm::make_counter("alloc_journal_bytes", + [this] { return get_alloc_journal_size(); }, + sm::description("the size of the journal for alloc info")), + sm::make_counter("projected_count", stats.projected_count, sm::description("the number of projected usage reservations")), sm::make_counter("projected_used_bytes_sum", stats.projected_used_bytes_sum, diff --git a/src/crimson/os/seastore/segment_cleaner.h b/src/crimson/os/seastore/segment_cleaner.h index e828bb586e44..7843d68727ea 100644 --- a/src/crimson/os/seastore/segment_cleaner.h +++ b/src/crimson/os/seastore/segment_cleaner.h @@ -1183,6 +1183,35 @@ private: (double)segments.get_total_bytes(); } + /* + * Journal sizes + */ + std::size_t get_dirty_journal_size() const { + auto journal_head = segments.get_journal_head(); + if (journal_head == JOURNAL_SEQ_NULL || + dirty_extents_replay_from == JOURNAL_SEQ_NULL) { + return 0; + } + return (journal_head.segment_seq - dirty_extents_replay_from.segment_seq) * + segments.get_segment_size() + + journal_head.offset.as_seg_paddr().get_segment_off() - + segments.get_segment_size() - + dirty_extents_replay_from.offset.as_seg_paddr().get_segment_off(); + } + + std::size_t get_alloc_journal_size() const { + auto journal_head = segments.get_journal_head(); + if (journal_head == JOURNAL_SEQ_NULL || + alloc_info_replay_from == JOURNAL_SEQ_NULL) { + return 0; + } + return (journal_head.segment_seq - alloc_info_replay_from.segment_seq) * + segments.get_segment_size() + + journal_head.offset.as_seg_paddr().get_segment_off() - + segments.get_segment_size() - + alloc_info_replay_from.offset.as_seg_paddr().get_segment_off(); + } + /** * should_block_on_gc *