]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/cache: report cache index sizes
authorYingxin Cheng <yingxin.cheng@intel.com>
Fri, 23 Aug 2024 09:00:48 +0000 (17:00 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Mon, 2 Sep 2024 02:57:49 +0000 (10:57 +0800)
Also rename Cache::extents to extents_index.

Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/cache.cc
src/crimson/os/seastore/cache.h

index 56f7e3c76a979682dae5cbc49cd1eff763970156..73e87d2bd9527bcba1c69124efb1ae45fecd1652 100644 (file)
@@ -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;
index 7bfc4d07aab559146063b1ac66cad4f371450690..8ee1b9fdab4220a6ddf67156f2da8d3122078683 100644 (file)
@@ -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<CachedExtentRef> _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())) {