From 8d2cdfdd2af83fd58d60856f28d983bb4447e4e4 Mon Sep 17 00:00:00 2001 From: myoungwon oh Date: Mon, 17 Jun 2024 10:12:50 +0000 Subject: [PATCH] crimson/os/seastore: add writer level stats to RBM Signed-off-by: Myoungwon Oh --- src/crimson/os/seastore/extent_placement_manager.cc | 13 +++++++++++-- src/crimson/os/seastore/extent_placement_manager.h | 10 ++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/crimson/os/seastore/extent_placement_manager.cc b/src/crimson/os/seastore/extent_placement_manager.cc index 9b814555b45..c2953fc5cf3 100644 --- a/src/crimson/os/seastore/extent_placement_manager.cc +++ b/src/crimson/os/seastore/extent_placement_manager.cc @@ -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, diff --git a/src/crimson/os/seastore/extent_placement_manager.h b/src/crimson/os/seastore/extent_placement_manager.h index 44408f2fadc..2985308e13b 100644 --- a/src/crimson/os/seastore/extent_placement_manager.h +++ b/src/crimson/os/seastore/extent_placement_manager.h @@ -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 { -- 2.39.5