From: Yingxin Cheng Date: Fri, 23 Aug 2024 09:00:48 +0000 (+0800) Subject: crimson/os/seastore/cache: report cache index sizes X-Git-Tag: v20.0.0~1112^2~7 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=befa65c8d203f0192eae3ccedfb11b4fe7b78bdc;p=ceph.git crimson/os/seastore/cache: report cache index sizes Also rename Cache::extents to extents_index. Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/cache.cc b/src/crimson/os/seastore/cache.cc index 56f7e3c76a979..73e87d2bd9527 100644 --- a/src/crimson/os/seastore/cache.cc +++ b/src/crimson/os/seastore/cache.cc @@ -52,10 +52,10 @@ Cache::Cache( Cache::~Cache() { LOG_PREFIX(Cache::~Cache); - for (auto &i: extents) { + for (auto &i: extents_index) { ERROR("extent is still alive -- {}", i); } - ceph_assert(extents.empty()); + ceph_assert(extents_index.empty()); } // TODO: this method can probably be removed in the future @@ -134,7 +134,7 @@ void Cache::dump_contents() { LOG_PREFIX(Cache::dump_contents); DEBUG("enter"); - for (auto &&i: extents) { + for (auto &&i: extents_index) { DEBUG("live {}", i); } DEBUG("exit"); @@ -487,14 +487,14 @@ void Cache::register_metrics() sm::make_counter( "cached_extents", [this] { - return extents.size(); + return extents_index.size(); }, sm::description("total number of cached extents") ), sm::make_counter( "cached_extent_bytes", [this] { - return extents.get_bytes(); + return extents_index.get_bytes(); }, sm::description("total bytes of cached extents") ), @@ -738,7 +738,7 @@ void Cache::add_extent(CachedExtentRef ref) assert(ref->is_valid()); assert(ref->user_hint == PLACEMENT_HINT_NULL); assert(ref->rewrite_generation == NULL_GENERATION); - extents.insert(*ref); + extents_index.insert(*ref); } void Cache::mark_dirty(CachedExtentRef ref) @@ -876,7 +876,7 @@ void Cache::remove_extent( } else if (!ref->is_placeholder()) { lru.remove_from_lru(*ref); } - extents.erase(*ref); + extents_index.erase(*ref); } void Cache::commit_retire_extent( @@ -897,7 +897,7 @@ void Cache::commit_replace_extent( { assert(next->get_paddr() == prev->get_paddr()); assert(next->version == prev->version + 1); - extents.replace(*next, *prev); + extents_index.replace(*next, *prev); const auto t_src = t.get_src(); if (is_root_type(prev->get_type())) { @@ -1822,7 +1822,7 @@ void Cache::init() NULL_GENERATION, TRANS_ID_NULL); INFO("init root -- {}", *root); - extents.insert(*root); + extents_index.insert(*root); } Cache::mkfs_iertr::future<> Cache::mkfs(Transaction &t) @@ -1851,8 +1851,8 @@ Cache::close_ertr::future<> Cache::close() get_oldest_backref_dirty_from().value_or(JOURNAL_SEQ_NULL), lru.get_current_num_extents(), lru.get_current_size_bytes(), - extents.size(), - extents.get_bytes()); + extents_index.size(), + extents_index.get_bytes()); root.reset(); clear_dirty(); backref_extents.clear(); @@ -2363,6 +2363,9 @@ cache_stats_t Cache::get_stats( << "ps, dversion=" << fmt::format(dfmt, _reclaim_rewrites.get_avg_version()); + oss << "\ncache total" + << cache_size_stats_t{extents_index.get_bytes(), extents_index.size()}; + INFO("{}", oss.str()); last_dirty_io_by_src_ext = stats.dirty_io_by_src_ext; diff --git a/src/crimson/os/seastore/cache.h b/src/crimson/os/seastore/cache.h index 7bfc4d07aab55..8ee1b9fdab422 100644 --- a/src/crimson/os/seastore/cache.h +++ b/src/crimson/os/seastore/cache.h @@ -167,7 +167,7 @@ using backref_entry_query_set_t = std::set< * - Remove all extents in the retired_set from Cache::extents * - Mark all extents in the write_set wait_io(), add promises to * transaction - * - Merge Transaction::write_set into Cache::extents + * - Merge Transaction::write_set into Cache::extents_index * * After phase 2, the user will submit the record to the journal. * Once complete, we perform phase 3: @@ -610,7 +610,7 @@ private: SUBDEBUG(seastore_cache, "{} {}~{} is absent(placeholder), reading ... -- {}", T::TYPE, offset, length, *ret); - extents.replace(*ret, *cached); + extents_index.replace(*ret, *cached); on_cache(*ret); // replace placeholder in transactions @@ -1141,8 +1141,8 @@ public: SUBINFOT(seastore_cache, "start with {}({}B) extents, {} dirty, dirty_from={}, alloc_from={}", t, - extents.size(), - extents.get_bytes(), + extents_index.size(), + extents_index.get_bytes(), dirty.size(), get_oldest_dirty_from().value_or(JOURNAL_SEQ_NULL), get_oldest_backref_dirty_from().value_or(JOURNAL_SEQ_NULL)); @@ -1151,7 +1151,7 @@ public: // Cache::root should have been inserted to the dirty list assert(root->is_dirty()); std::vector _dirty; - for (auto &e : extents) { + for (auto &e : extents_index) { _dirty.push_back(CachedExtentRef(&e)); } return seastar::do_with( @@ -1184,8 +1184,8 @@ public: SUBINFOT(seastore_cache, "finish with {}({}B) extents, {} dirty, dirty_from={}, alloc_from={}", t, - extents.size(), - extents.get_bytes(), + extents_index.size(), + extents_index.get_bytes(), dirty.size(), get_oldest_dirty_from().value_or(JOURNAL_SEQ_NULL), get_oldest_backref_dirty_from().value_or(JOURNAL_SEQ_NULL)); @@ -1370,7 +1370,7 @@ private: ExtentPlacementManager& epm; RootBlockRef root; ///< ref to current root - ExtentIndex extents; ///< set of live extents + ExtentIndex extents_index; ///< set of live extents journal_seq_t last_commit = JOURNAL_SEQ_MIN; @@ -1784,8 +1784,8 @@ private: p_counters = &get_by_src(stats.cache_query_by_src, p_metric_key->first); ++p_counters->access; } - if (auto iter = extents.find_offset(offset); - iter != extents.end()) { + if (auto iter = extents_index.find_offset(offset); + iter != extents_index.end()) { if (p_metric_key && // retired_placeholder is not really cached yet !is_retired_placeholder_type(iter->get_type())) {