]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: add writer level stats to RBM
authormyoungwon oh <ohmyoungwon@gmail.com>
Mon, 17 Jun 2024 10:12:50 +0000 (10:12 +0000)
committermyoungwon oh <ohmyoungwon@gmail.com>
Tue, 18 Jun 2024 07:41:15 +0000 (07:41 +0000)
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/crimson/os/seastore/extent_placement_manager.cc
src/crimson/os/seastore/extent_placement_manager.h

index 9b814555b4591d5592d6d605644df50183485a77..c2953fc5cf3b860bd823d8f2852958ee30ed08e8 100644 (file)
@@ -311,7 +311,12 @@ ExtentPlacementManager::get_device_stats(
     }
     main_stats.add(main_writer_stats.back());
   } else { // RBM
-    // TODO stats from RandomBlockOolWriter
+    ceph_assert(get_main_backend_type() == backend_type_t::RANDOM_BLOCK);
+    // In RBM, md_writer and data_wrtier share a single writer, so we only register
+    // md_writer's writer here.
+    main_writer_stats.emplace_back(
+        get_writer(METADATA, OOL_GENERATION)->get_stats());
+    main_stats.add(main_writer_stats.back());
   }
 
   writer_stats_t cold_stats = {};
@@ -360,7 +365,7 @@ ExtentPlacementManager::get_device_stats(
       report_writer_stats("  mainmdat", main_writer_stats[2]);
       report_writer_stats("  maindata", main_writer_stats[3]);
     } else { // RBM
-      // TODO stats from RandomBlockOolWriter
+      report_writer_stats("  ool", main_writer_stats[0]);
     }
     if (has_cold_tier) {
       report_writer_stats("tier-cold", cold_stats);
@@ -1019,6 +1024,10 @@ RandomBlockOolWriter::do_write(
       bp = ceph::bufferptr(ex->get_bptr(), offset, len);
     } else {
       bp = ex->get_bptr();
+      auto& trans_stats = get_by_src(w_stats.stats_by_src, t.get_src());
+      ++(trans_stats.num_records);
+      trans_stats.data_bytes += ex->get_length();
+      w_stats.record_group_data_bytes += ex->get_length();
     }
     return trans_intr::make_interruptible(
       rbm->write(paddr + offset,
index 44408f2fadc1421f7186cfa73d7ba1b890c5367b..2985308e13bbdcda833f77df564be655693a7bde 100644 (file)
@@ -137,12 +137,16 @@ public:
   }
 
   writer_stats_t get_stats() const final {
-    // TODO: collect stats
-    return {};
+    writer_stats_t ret = w_stats;
+    ret.minus(last_w_stats);
+    last_w_stats = w_stats;
+    return ret;
   }
 
   using open_ertr = ExtentOolWriter::open_ertr;
   open_ertr::future<> open() final {
+    w_stats = {};
+    last_w_stats = {};
     return open_ertr::now();
   }
 
@@ -192,6 +196,8 @@ private:
 
   RBMCleaner* rb_cleaner;
   seastar::gate write_guard;
+  writer_stats_t w_stats;
+  mutable writer_stats_t last_w_stats;
 };
 
 struct cleaner_usage_t {