From: Yingxin Cheng Date: Fri, 6 May 2022 08:44:02 +0000 (+0800) Subject: crimson/os/seastore: fix metrics with TRIM_BACKREF transaction X-Git-Tag: v18.0.0~884^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=538f95542b9d778df9e441a6c49dfe1a6c86b2c5;p=ceph-ci.git crimson/os/seastore: fix metrics with TRIM_BACKREF transaction Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index bc89747115b..35ac8b62b99 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -126,8 +126,10 @@ void Cache::register_metrics() {src_t::MUTATE, sm::label_instance("src", "MUTATE")}, {src_t::READ, sm::label_instance("src", "READ")}, {src_t::CLEANER_TRIM, sm::label_instance("src", "CLEANER_TRIM")}, + {src_t::TRIM_BACKREF, sm::label_instance("src", "TRIM_BACKREF")}, {src_t::CLEANER_RECLAIM, sm::label_instance("src", "CLEANER_RECLAIM")}, }; + assert(labels_by_src.size() == (std::size_t)src_t::MAX); std::map labels_by_ext { {extent_types_t::ROOT, sm::label_instance("ext", "ROOT")}, @@ -140,9 +142,13 @@ void Cache::register_metrics() {extent_types_t::OBJECT_DATA_BLOCK, sm::label_instance("ext", "OBJECT_DATA_BLOCK")}, {extent_types_t::RETIRED_PLACEHOLDER, sm::label_instance("ext", "RETIRED_PLACEHOLDER")}, {extent_types_t::ALLOC_INFO, sm::label_instance("ext", "ALLOC_INFO")}, + {extent_types_t::ALLOC_TAIL, sm::label_instance("ext", "ALLOC_TAIL")}, {extent_types_t::TEST_BLOCK, sm::label_instance("ext", "TEST_BLOCK")}, - {extent_types_t::TEST_BLOCK_PHYSICAL, sm::label_instance("ext", "TEST_BLOCK_PHYSICAL")} + {extent_types_t::TEST_BLOCK_PHYSICAL, sm::label_instance("ext", "TEST_BLOCK_PHYSICAL")}, + {extent_types_t::BACKREF_INTERNAL, sm::label_instance("ext", "BACKREF_INTERNAL")}, + {extent_types_t::BACKREF_LEAF, sm::label_instance("ext", "BACKREF_LEAF")} }; + assert(labels_by_ext.size() == (std::size_t)extent_types_t::NONE); /* * trans_created @@ -508,8 +514,7 @@ void Cache::register_metrics() // READ transaction won't contain any tree inserts and erases continue; } - if ((src == src_t::CLEANER_TRIM || - src == src_t::CLEANER_RECLAIM) && + if (is_cleaner_transaction(src) && tree_label == onode_label) { // CLEANER transaction won't contain any onode tree operations continue; @@ -577,8 +582,8 @@ void Cache::register_metrics() src2 == Transaction::src_t::CLEANER_TRIM) || (src1 == Transaction::src_t::CLEANER_RECLAIM && src2 == Transaction::src_t::CLEANER_RECLAIM) || - (src1 == Transaction::src_t::CLEANER_TRIM && - src2 == Transaction::src_t::CLEANER_RECLAIM)) { + (src1 == Transaction::src_t::TRIM_BACKREF && + src2 == Transaction::src_t::TRIM_BACKREF)) { continue; } std::ostringstream oss; @@ -788,8 +793,7 @@ void Cache::mark_transaction_conflicted( auto ool_record_bytes = (ool_stats.md_bytes + ool_stats.get_data_bytes()); efforts.ool_record_bytes += ool_record_bytes; - if (t.get_src() == Transaction::src_t::CLEANER_TRIM || - t.get_src() == Transaction::src_t::CLEANER_RECLAIM) { + if (is_cleaner_transaction(t.get_src())) { // CLEANER transaction won't contain any onode tree operations assert(t.onode_tree_stats.is_clear()); } else { @@ -1078,7 +1082,7 @@ record_t Cache::prepare_record( if (t.get_src() == Transaction::src_t::MUTATE) { i->set_last_modified(commit_time); } else { - assert(t.get_src() >= Transaction::src_t::CLEANER_TRIM); + assert(is_cleaner_transaction(t.get_src())); i->set_last_rewritten(commit_time); } @@ -1134,7 +1138,7 @@ record_t Cache::prepare_record( record.push_back(std::move(delta)); } - if (t.is_cleaner_transaction()) { + if (is_cleaner_transaction(trans_src)) { bufferlist bl; encode(get_oldest_backref_dirty_from().value_or(JOURNAL_SEQ_NULL), bl); delta_info_t delta; @@ -1175,8 +1179,7 @@ record_t Cache::prepare_record( ool_stats.get_data_bytes(), record.size.get_raw_mdlength(), record.size.dlength); - if (trans_src == Transaction::src_t::CLEANER_TRIM || - trans_src == Transaction::src_t::CLEANER_RECLAIM) { + if (is_cleaner_transaction(trans_src)) { // CLEANER transaction won't contain any onode tree operations assert(t.onode_tree_stats.is_clear()); } else { @@ -1279,7 +1282,7 @@ void Cache::complete_commit( (t.get_src() == Transaction::src_t::MUTATE) ? i->last_modified : seastar::lowres_system_clock::time_point(), - (t.get_src() >= Transaction::src_t::CLEANER_TRIM) + (is_cleaner_transaction(t.get_src())) ? i->last_rewritten : seastar::lowres_system_clock::time_point()); } diff --git a/src/crimson/os/seastore/cache.h b/src/crimson/os/seastore/cache.h index ba6999e5f82..086f3a23b92 100644 --- a/src/crimson/os/seastore/cache.h +++ b/src/crimson/os/seastore/cache.h @@ -1189,8 +1189,8 @@ private: src2 == Transaction::src_t::CLEANER_TRIM)); assert(!(src1 == Transaction::src_t::CLEANER_RECLAIM && src2 == Transaction::src_t::CLEANER_RECLAIM)); - assert(!(src1 == Transaction::src_t::CLEANER_TRIM && - src2 == Transaction::src_t::CLEANER_RECLAIM)); + assert(!(src1 == Transaction::src_t::TRIM_BACKREF && + src2 == Transaction::src_t::TRIM_BACKREF)); auto src1_value = static_cast(src1); auto src2_value = static_cast(src2); diff --git a/src/crimson/os/seastore/extent_placement_manager.cc b/src/crimson/os/seastore/extent_placement_manager.cc index 4450dd6cff1..c16fe645923 100644 --- a/src/crimson/os/seastore/extent_placement_manager.cc +++ b/src/crimson/os/seastore/extent_placement_manager.cc @@ -88,8 +88,7 @@ SegmentedOolWriter::do_write( if (t.get_src() == Transaction::src_t::MUTATE) { commit_type = record_commit_type_t::MODIFY; } else { - assert(t.get_src() == Transaction::src_t::CLEANER_TRIM || - t.get_src() == Transaction::src_t::CLEANER_RECLAIM); + assert(is_cleaner_transaction(t.get_src())); commit_type = record_commit_type_t::REWRITE; } record.commit_time = commit_time.time_since_epoch().count(); diff --git a/src/crimson/os/seastore/transaction.h b/src/crimson/os/seastore/transaction.h index 466f0b4a995..c5b7f9e291d 100644 --- a/src/crimson/os/seastore/transaction.h +++ b/src/crimson/os/seastore/transaction.h @@ -260,10 +260,6 @@ public: return src; } - bool is_cleaner_transaction() const { - return src >= Transaction::src_t::CLEANER_TRIM; - } - bool is_weak() const { return weak; } @@ -476,6 +472,11 @@ inline std::ostream& operator<<(std::ostream& os, } } +constexpr bool is_cleaner_transaction(Transaction::src_t src) { + return (src >= Transaction::src_t::CLEANER_TRIM && + src < Transaction::src_t::MAX); +} + /// Should only be used with dummy staged-fltree node extent manager inline TransactionRef make_test_transaction() { return std::make_unique(