SegmentCleanerRef _segment_cleaner,
JournalRef _journal,
CacheRef _cache,
- LBAManagerRef _lba_manager,
- PerfCounters &perf)
+ LBAManagerRef _lba_manager)
: segment_manager(_segment_manager),
segment_cleaner(std::move(_segment_cleaner)),
cache(std::move(_cache)),
lba_manager(std::move(_lba_manager)),
- journal(std::move(_journal)),
- tm_perf(perf)
+ journal(std::move(_journal))
{
segment_cleaner->set_extent_callback(this);
journal->set_write_pipeline(&write_pipeline);
t,
*ref);
cache->retire_extent(t, ref);
- tm_perf.inc(ss_tm_extents_retired_total);
- tm_perf.inc(ss_tm_extents_retired_bytes, ref->get_length());
+ stats.extents_retired_total++;
+ stats.extents_retired_bytes += ref->get_length();
}
return ret.refcount;
});
return cache->retire_extent(
t, result.addr, result.length
).safe_then([result, this] {
- tm_perf.inc(ss_tm_extents_retired_total);
- tm_perf.inc(ss_tm_extents_retired_bytes, result.length);
+ stats.extents_retired_total++;
+ stats.extents_retired_bytes += result.length;
return ref_ret(
ref_ertr::ready_future_marker{},
0);
TransactionManager::~TransactionManager() {}
+void TransactionManager::register_metrics()
+{
+ namespace sm = seastar::metrics;
+ metrics.add_group("tm", {
+ sm::make_counter("extents_retired_total", stats.extents_retired_total,
+ sm::description("total number of retired extents in TransactionManager")),
+ sm::make_counter("extents_retired_bytes", stats.extents_retired_bytes,
+ sm::description("total size of retired extents in TransactionManager")),
+ sm::make_counter("extents_mutated_total", stats.extents_mutated_total,
+ sm::description("total number of mutated extents in TransactionManager")),
+ sm::make_counter("extents_mutated_bytes", stats.extents_mutated_bytes,
+ sm::description("total size of mutated extents in TransactionManager")),
+ sm::make_counter("extents_allocated_total", stats.extents_allocated_total,
+ sm::description("total number of allocated extents in TransactionManager")),
+ sm::make_counter("extents_allocated_bytes", stats.extents_allocated_bytes,
+ sm::description("total size of allocated extents in TransactionManager")),
+ });
+}
+
}
SegmentCleanerRef segment_cleaner,
JournalRef journal,
CacheRef cache,
- LBAManagerRef lba_manager,
- PerfCounters &perf);
+ LBAManagerRef lba_manager);
/// Writes initial metadata to disk
using mkfs_ertr = crimson::errorator<
auto ret = cache->duplicate_for_write(
t,
ref)->cast<LogicalCachedExtent>();
- tm_perf.inc(ss_tm_extents_mutated_total);
- tm_perf.inc(ss_tm_extents_mutated_bytes, ret->get_length());
+ stats.extents_mutated_total++;
+ stats.extents_mutated_bytes += ret->get_length();
if (!ret->has_pin()) {
DEBUGT(
"duplicating {} for write: {}",
ext->get_paddr()
).safe_then([ext=std::move(ext), len, this](auto &&ref) mutable {
ext->set_pin(std::move(ref));
- tm_perf.inc(ss_tm_extents_allocated_total);
- tm_perf.inc(ss_tm_extents_allocated_bytes, len);
+ stats.extents_allocated_total++;
+ stats.extents_allocated_bytes += len;
return alloc_extent_ertr::make_ready_future<TCachedExtentRef<T>>(
std::move(ext));
});
CacheRef cache;
LBAManagerRef lba_manager;
JournalRef journal;
- PerfCounters &tm_perf;
WritePipeline write_pipeline;
+ struct {
+ uint64_t extents_retired_total = 0;
+ uint64_t extents_retired_bytes = 0;
+ uint64_t extents_mutated_total = 0;
+ uint64_t extents_mutated_bytes = 0;
+ uint64_t extents_allocated_total = 0;
+ uint64_t extents_allocated_bytes = 0;
+ } stats;
+ seastar::metrics::metric_group metrics;
+ void register_metrics();
+
public:
// Testing interfaces
auto get_segment_cleaner() {