Skip to content

Commit 0662763

Browse files
authored
Merge pull request ceph#58083 from myoungwon/wip-seastore-rbm-stat
crimson/os/seastore: add writer level stats to RBM Reviewed-by: Yingxin Cheng <[email protected]>
2 parents 37a5322 + 8146b01 commit 0662763

File tree

5 files changed

+26
-11
lines changed

5 files changed

+26
-11
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.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 {

src/crimson/os/seastore/journal/record_submitter.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ RecordSubmitter::open(bool is_mkfs)
411411
),
412412
sm::make_counter(
413413
"record_group_data_bytes",
414-
stats.record_group_data_bytes,
414+
stats.data_bytes,
415415
sm::description("bytes of data when write record groups"),
416416
label_instances
417417
),
@@ -489,7 +489,7 @@ void RecordSubmitter::account_submission(
489489
stats.record_group_padding_bytes +=
490490
(rg.size.get_mdlength() - rg.size.get_raw_mdlength());
491491
stats.record_group_metadata_bytes += rg.size.get_raw_mdlength();
492-
stats.record_group_data_bytes += rg.size.dlength;
492+
stats.data_bytes += rg.size.dlength;
493493
stats.record_batch_stats.increment(rg.get_size());
494494

495495
for (const record_t& r : rg.records) {

src/crimson/os/seastore/seastore_types.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -911,7 +911,7 @@ std::ostream& operator<<(std::ostream& out, const writer_stats_printer_t& p)
911911
<< ",sizeB="
912912
<< fmt::format(dfmt, p.stats.get_total_bytes()/d_num_io)
913913
<< "("
914-
<< fmt::format(dfmt, p.stats.record_group_data_bytes/d_num_io)
914+
<< fmt::format(dfmt, p.stats.data_bytes/d_num_io)
915915
<< ","
916916
<< fmt::format(dfmt, p.stats.record_group_metadata_bytes/d_num_io)
917917
<< ","

src/crimson/os/seastore/seastore_types.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2330,7 +2330,7 @@ struct writer_stats_t {
23302330
grouped_io_stats io_depth_stats;
23312331
uint64_t record_group_padding_bytes = 0;
23322332
uint64_t record_group_metadata_bytes = 0;
2333-
uint64_t record_group_data_bytes = 0;
2333+
uint64_t data_bytes = 0;
23342334
counter_by_src_t<trans_writer_stats_t> stats_by_src;
23352335

23362336
bool is_empty() const {
@@ -2340,15 +2340,15 @@ struct writer_stats_t {
23402340
uint64_t get_total_bytes() const {
23412341
return record_group_padding_bytes +
23422342
record_group_metadata_bytes +
2343-
record_group_data_bytes;
2343+
data_bytes;
23442344
}
23452345

23462346
void add(const writer_stats_t &o) {
23472347
record_batch_stats.add(o.record_batch_stats);
23482348
io_depth_stats.add(o.io_depth_stats);
23492349
record_group_padding_bytes += o.record_group_padding_bytes;
23502350
record_group_metadata_bytes += o.record_group_metadata_bytes;
2351-
record_group_data_bytes += o.record_group_data_bytes;
2351+
data_bytes += o.data_bytes;
23522352
add_srcs(stats_by_src, o.stats_by_src);
23532353
}
23542354

@@ -2357,7 +2357,7 @@ struct writer_stats_t {
23572357
io_depth_stats.minus(o.io_depth_stats);
23582358
record_group_padding_bytes -= o.record_group_padding_bytes;
23592359
record_group_metadata_bytes -= o.record_group_metadata_bytes;
2360-
record_group_data_bytes -= o.record_group_data_bytes;
2360+
data_bytes -= o.data_bytes;
23612361
minus_srcs(stats_by_src, o.stats_by_src);
23622362
}
23632363
};

0 commit comments

Comments
 (0)