Skip to content

Commit 8d2cdfd

Browse files
committed
crimson/os/seastore: add writer level stats to RBM
Signed-off-by: Myoungwon Oh <[email protected]>
1 parent 80e6c3c commit 8d2cdfd

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

src/crimson/os/seastore/extent_placement_manager.cc

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,12 @@ ExtentPlacementManager::get_device_stats(
311311
}
312312
main_stats.add(main_writer_stats.back());
313313
} else { // RBM
314-
// TODO stats from RandomBlockOolWriter
314+
ceph_assert(get_main_backend_type() == backend_type_t::RANDOM_BLOCK);
315+
// In RBM, md_writer and data_wrtier share a single writer, so we only register
316+
// md_writer's writer here.
317+
main_writer_stats.emplace_back(
318+
get_writer(METADATA, OOL_GENERATION)->get_stats());
319+
main_stats.add(main_writer_stats.back());
315320
}
316321

317322
writer_stats_t cold_stats = {};
@@ -360,7 +365,7 @@ ExtentPlacementManager::get_device_stats(
360365
report_writer_stats(" mainmdat", main_writer_stats[2]);
361366
report_writer_stats(" maindata", main_writer_stats[3]);
362367
} else { // RBM
363-
// TODO stats from RandomBlockOolWriter
368+
report_writer_stats(" ool", main_writer_stats[0]);
364369
}
365370
if (has_cold_tier) {
366371
report_writer_stats("tier-cold", cold_stats);
@@ -1019,6 +1024,10 @@ RandomBlockOolWriter::do_write(
10191024
bp = ceph::bufferptr(ex->get_bptr(), offset, len);
10201025
} else {
10211026
bp = ex->get_bptr();
1027+
auto& trans_stats = get_by_src(w_stats.stats_by_src, t.get_src());
1028+
++(trans_stats.num_records);
1029+
trans_stats.data_bytes += ex->get_length();
1030+
w_stats.record_group_data_bytes += ex->get_length();
10221031
}
10231032
return trans_intr::make_interruptible(
10241033
rbm->write(paddr + offset,

src/crimson/os/seastore/extent_placement_manager.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,16 @@ class RandomBlockOolWriter : public ExtentOolWriter {
137137
}
138138

139139
writer_stats_t get_stats() const final {
140-
// TODO: collect stats
141-
return {};
140+
writer_stats_t ret = w_stats;
141+
ret.minus(last_w_stats);
142+
last_w_stats = w_stats;
143+
return ret;
142144
}
143145

144146
using open_ertr = ExtentOolWriter::open_ertr;
145147
open_ertr::future<> open() final {
148+
w_stats = {};
149+
last_w_stats = {};
146150
return open_ertr::now();
147151
}
148152

@@ -192,6 +196,8 @@ class RandomBlockOolWriter : public ExtentOolWriter {
192196

193197
RBMCleaner* rb_cleaner;
194198
seastar::gate write_guard;
199+
writer_stats_t w_stats;
200+
mutable writer_stats_t last_w_stats;
195201
};
196202

197203
struct cleaner_usage_t {

0 commit comments

Comments
 (0)