From 0d20f1595a0c839e780540b61ff68f52be29a99b Mon Sep 17 00:00:00 2001 From: Zhang Song Date: Tue, 10 Jan 2023 17:00:12 +0800 Subject: [PATCH] crimson/os/seasotre: add CLEANER_COLD transaction type rename CLEANER to CLEANER_MAIN Signed-off-by: Zhang Song --- src/crimson/os/seastore/async_cleaner.cc | 6 +++++- src/crimson/os/seastore/cache.cc | 12 ++++++++---- src/crimson/os/seastore/cache.h | 6 ++++-- src/crimson/os/seastore/seastore_types.cc | 6 ++++-- src/crimson/os/seastore/seastore_types.h | 3 ++- 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/crimson/os/seastore/async_cleaner.cc b/src/crimson/os/seastore/async_cleaner.cc index 2a5e89fdbfe6c..3dac3d9f9fd93 100644 --- a/src/crimson/os/seastore/async_cleaner.cc +++ b/src/crimson/os/seastore/async_cleaner.cc @@ -1061,8 +1061,12 @@ SegmentCleaner::do_reclaim_space( &pin_list, &reclaimed, &runs] { reclaimed = 0; runs++; + auto src = Transaction::src_t::CLEANER_MAIN; + if (is_cold) { + src = Transaction::src_t::CLEANER_COLD; + } return extent_callback->with_transaction_intr( - Transaction::src_t::CLEANER, + src, "clean_reclaim_space", [this, &backref_extents, &pin_list, &reclaimed](auto &t) { diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index 97b60eb400686..064cb0cc8421e 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -135,7 +135,8 @@ void Cache::register_metrics() {src_t::READ, sm::label_instance("src", "READ")}, {src_t::TRIM_DIRTY, sm::label_instance("src", "TRIM_DIRTY")}, {src_t::TRIM_ALLOC, sm::label_instance("src", "TRIM_ALLOC")}, - {src_t::CLEANER, sm::label_instance("src", "CLEANER")}, + {src_t::CLEANER_MAIN, sm::label_instance("src", "CLEANER_MAIN")}, + {src_t::CLEANER_COLD, sm::label_instance("src", "CLEANER_COLD")}, }; assert(labels_by_src.size() == (std::size_t)src_t::MAX); @@ -624,8 +625,10 @@ void Cache::register_metrics() src2 == Transaction::src_t::READ) || (src1 == Transaction::src_t::TRIM_DIRTY && src2 == Transaction::src_t::TRIM_DIRTY) || - (src1 == Transaction::src_t::CLEANER && - src2 == Transaction::src_t::CLEANER) || + (src1 == Transaction::src_t::CLEANER_MAIN && + src2 == Transaction::src_t::CLEANER_MAIN) || + (src1 == Transaction::src_t::CLEANER_COLD && + src2 == Transaction::src_t::CLEANER_COLD) || (src1 == Transaction::src_t::TRIM_ALLOC && src2 == Transaction::src_t::TRIM_ALLOC)) { continue; @@ -1389,7 +1392,8 @@ record_t Cache::prepare_record( auto &rewrite_version_stats = t.get_rewrite_version_stats(); if (trans_src == Transaction::src_t::TRIM_DIRTY) { stats.committed_dirty_version.increment_stat(rewrite_version_stats); - } else if (trans_src == Transaction::src_t::CLEANER) { + } else if (trans_src == Transaction::src_t::CLEANER_MAIN || + trans_src == Transaction::src_t::CLEANER_COLD) { stats.committed_reclaim_version.increment_stat(rewrite_version_stats); } else { assert(rewrite_version_stats.is_clear()); diff --git a/src/crimson/os/seastore/cache.h b/src/crimson/os/seastore/cache.h index 4fbdfdaa637ee..375771d15511e 100644 --- a/src/crimson/os/seastore/cache.h +++ b/src/crimson/os/seastore/cache.h @@ -1225,8 +1225,10 @@ private: src2 == Transaction::src_t::READ)); assert(!(src1 == Transaction::src_t::TRIM_DIRTY && src2 == Transaction::src_t::TRIM_DIRTY)); - assert(!(src1 == Transaction::src_t::CLEANER && - src2 == Transaction::src_t::CLEANER)); + assert(!(src1 == Transaction::src_t::CLEANER_MAIN && + src2 == Transaction::src_t::CLEANER_MAIN)); + assert(!(src1 == Transaction::src_t::CLEANER_COLD && + src2 == Transaction::src_t::CLEANER_COLD)); assert(!(src1 == Transaction::src_t::TRIM_ALLOC && src2 == Transaction::src_t::TRIM_ALLOC)); diff --git a/src/crimson/os/seastore/seastore_types.cc b/src/crimson/os/seastore/seastore_types.cc index 432539d73ea37..6d1b4e50ca602 100644 --- a/src/crimson/os/seastore/seastore_types.cc +++ b/src/crimson/os/seastore/seastore_types.cc @@ -399,8 +399,10 @@ std::ostream &operator<<(std::ostream &os, transaction_type_t type) return os << "TRIM_DIRTY"; case transaction_type_t::TRIM_ALLOC: return os << "TRIM_ALLOC"; - case transaction_type_t::CLEANER: - return os << "CLEANER"; + case transaction_type_t::CLEANER_MAIN: + return os << "CLEANER_MAIN"; + case transaction_type_t::CLEANER_COLD: + return os << "CLEANER_COLD"; case transaction_type_t::MAX: return os << "TRANS_TYPE_NULL"; default: diff --git a/src/crimson/os/seastore/seastore_types.h b/src/crimson/os/seastore/seastore_types.h index be7656e6cfc0d..756865cf6e33c 100644 --- a/src/crimson/os/seastore/seastore_types.h +++ b/src/crimson/os/seastore/seastore_types.h @@ -1746,7 +1746,8 @@ enum class transaction_type_t : uint8_t { READ, // including weak and non-weak read transactions TRIM_DIRTY, TRIM_ALLOC, - CLEANER, + CLEANER_MAIN, + CLEANER_COLD, MAX }; -- 2.39.5