From: Yingxin Cheng Date: Mon, 7 Feb 2022 10:34:40 +0000 (+0800) Subject: crimson/os/seastore/lba_manager: move lba_tree_inner_stats into LBAManager X-Git-Tag: v18.0.0~1426^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c277fdecc575dc6df76402065f92bef0db94e6a0;p=ceph.git crimson/os/seastore/lba_manager: move lba_tree_inner_stats into LBAManager Cleanup, change stats from LBATree static member to BtreeLBAManager class member. Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc index b699a5ed88fda..32e2b5ea19eed 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc +++ b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc @@ -51,7 +51,6 @@ BtreeLBAManager::get_mappings( return LBABtree::iterate_repeat( c, btree.upper_bound_right(c, offset), - false, [&ret, offset, length](auto &pos) { if (pos.is_end() || pos.get_key() >= (offset + length)) { return LBABtree::iterate_repeat_ret_inner( @@ -139,17 +138,17 @@ BtreeLBAManager::alloc_extent( LOG_PREFIX(BtreeLBAManager::alloc_extent); DEBUGT("hint: {}, length: {}", t, hint, len); auto c = get_context(t); - ++LBABtree::lba_tree_inner_stats.num_alloc_extents; + ++stats.num_alloc_extents; return with_btree_state( c, hint, - [FNAME, c, hint, len, addr, &t](auto &btree, auto &state) { + [this, FNAME, c, hint, len, addr, &t](auto &btree, auto &state) { return LBABtree::iterate_repeat( c, btree.upper_bound_right(c, hint), - true, - [&state, len, &t, hint](auto &pos) { + [this, &state, len, &t, hint](auto &pos) { LOG_PREFIX(BtreeLBAManager::alloc_extent); + ++stats.num_alloc_extents_iter_nexts; if (!pos.is_end()) { DEBUGT("iterate_repeat: pos: {}~{}, state: {}~{}, hint: {}", t, @@ -296,7 +295,6 @@ BtreeLBAManager::scan_mappings_ret BtreeLBAManager::scan_mappings( return LBABtree::iterate_repeat( c, btree.upper_bound_right(c, begin), - false, [f=std::move(f), begin, end](auto &pos) { if (pos.is_end() || pos.get_key() >= end) { return LBABtree::iterate_repeat_ret_inner( @@ -328,7 +326,6 @@ BtreeLBAManager::scan_mapped_space_ret BtreeLBAManager::scan_mapped_space( return LBABtree::iterate_repeat( c, btree.lower_bound(c, 0, &visitor), - false, [&visitor](auto &pos) { if (pos.is_end()) { return LBABtree::iterate_repeat_ret_inner( @@ -431,21 +428,21 @@ BtreeLBAManager::BtreeLBAManager( register_metrics(); } -LBABtree::lba_tree_inner_stats_t LBABtree::lba_tree_inner_stats; void BtreeLBAManager::register_metrics() { + stats = {}; namespace sm = seastar::metrics; metrics.add_group( "LBA", { sm::make_counter( "alloc_extents", - LBABtree::lba_tree_inner_stats.num_alloc_extents, + stats.num_alloc_extents, sm::description("total number of lba alloc_extent operations") ), sm::make_counter( "alloc_extents_iter_nexts", - LBABtree::lba_tree_inner_stats.num_alloc_extents_iter_nexts, + stats.num_alloc_extents_iter_nexts, sm::description("total number of iterator next operations during extent allocation") ), } diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h index 7194019d62aff..b6443f9f28ed1 100644 --- a/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h +++ b/src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h @@ -128,6 +128,11 @@ private: btree_pin_set_t pin_set; + struct { + uint64_t num_alloc_extents = 0; + uint64_t num_alloc_extents_iter_nexts = 0; + } stats; + op_context_t get_context(Transaction &t) { return op_context_t{cache, t, &pin_set}; } diff --git a/src/crimson/os/seastore/lba_manager/btree/lba_btree.h b/src/crimson/os/seastore/lba_manager/btree/lba_btree.h index 163f7b11d9c8a..7f6fa5faceb15 100644 --- a/src/crimson/os/seastore/lba_manager/btree/lba_btree.h +++ b/src/crimson/os/seastore/lba_manager/btree/lba_btree.h @@ -27,11 +27,6 @@ public: using mapped_space_visitor_t = LBAManager::scan_mapped_space_func_t; - struct lba_tree_inner_stats_t { - uint64_t num_alloc_extents = 0; - uint64_t num_alloc_extents_iter_nexts = 0; - } static lba_tree_inner_stats; - class iterator { public: iterator(const iterator &rhs) noexcept : @@ -268,30 +263,26 @@ public: static base_iertr::future<> iterate_repeat( op_context_t c, iterator_fut &&iter_fut, - bool need_count, F &&f, mapped_space_visitor_t *visitor=nullptr) { return std::move( iter_fut - ).si_then([c, need_count, visitor, f=std::forward(f)](auto iter) { + ).si_then([c, visitor, f=std::forward(f)](auto iter) { return seastar::do_with( iter, std::move(f), - [c, need_count, visitor](auto &pos, auto &f) { + [c, visitor](auto &pos, auto &f) { return trans_intr::repeat( - [c, need_count, visitor, &f, &pos] { + [c, visitor, &f, &pos] { return f( pos - ).si_then([c, need_count, visitor, &pos](auto done) { + ).si_then([c, visitor, &pos](auto done) { if (done == seastar::stop_iteration::yes) { return iterate_repeat_ret_inner( interruptible::ready_future_marker{}, seastar::stop_iteration::yes); } else { ceph_assert(!pos.is_end()); - if (need_count) { - ++LBABtree::lba_tree_inner_stats.num_alloc_extents_iter_nexts; - } return pos.next( c, visitor ).si_then([&pos](auto next) {