}
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 = {};
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);
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,
}
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();
}
RBMCleaner* rb_cleaner;
seastar::gate write_guard;
+ writer_stats_t w_stats;
+ mutable writer_stats_t last_w_stats;
};
struct cleaner_usage_t {