}
};
- template <typename CounterT>
- using counter_by_src_t = std::array<CounterT, TRANSACTION_TYPE_MAX>;
-
static constexpr std::size_t NUM_SRC_COMB =
TRANSACTION_TYPE_MAX * (TRANSACTION_TYPE_MAX + 1) / 2;
version_stat_t committed_reclaim_version;
} stats;
- template <typename CounterT>
- CounterT& get_by_src(
- counter_by_src_t<CounterT>& counters_by_src,
- Transaction::src_t src) {
- assert(static_cast<std::size_t>(src) < counters_by_src.size());
- return counters_by_src[static_cast<std::size_t>(src)];
- }
-
template <typename CounterT>
CounterT& get_by_ext(
counter_by_extent_t<CounterT>& counters_by_ext,
// OVERFLOW: outstanding_io > io_depth_limit is impossible
};
- struct grouped_io_stats {
- uint64_t num_io = 0;
- uint64_t num_io_grouped = 0;
-
- void increment(uint64_t num_grouped_io) {
- ++num_io;
- num_io_grouped += num_grouped_io;
- }
- };
-
using base_ertr = crimson::errorator<
crimson::ct_error::input_output_error>;
// wait for decrement_io_with_flush()
std::optional<seastar::promise<> > wait_unfull_flush_promise;
- struct {
- grouped_io_stats record_batch_stats;
- grouped_io_stats io_depth_stats;
- uint64_t record_group_padding_bytes = 0;
- uint64_t record_group_metadata_bytes = 0;
- uint64_t record_group_data_bytes = 0;
- } stats;
+ writer_stats_t stats;
+
seastar::metrics::metric_group metrics;
};
};
std::ostream& operator<<(std::ostream&, const scan_valid_records_cursor&);
+template <typename CounterT>
+using counter_by_src_t = std::array<CounterT, TRANSACTION_TYPE_MAX>;
+
+template <typename CounterT>
+CounterT& get_by_src(
+ counter_by_src_t<CounterT>& counters_by_src,
+ transaction_type_t src) {
+ assert(static_cast<std::size_t>(src) < counters_by_src.size());
+ return counters_by_src[static_cast<std::size_t>(src)];
+}
+
+template <typename CounterT>
+const CounterT& get_by_src(
+ const counter_by_src_t<CounterT>& counters_by_src,
+ transaction_type_t src) {
+ assert(static_cast<std::size_t>(src) < counters_by_src.size());
+ return counters_by_src[static_cast<std::size_t>(src)];
+}
+
+struct grouped_io_stats {
+ uint64_t num_io = 0;
+ uint64_t num_io_grouped = 0;
+
+ void increment(uint64_t num_grouped_io) {
+ ++num_io;
+ num_io_grouped += num_grouped_io;
+ }
+};
+
+struct writer_stats_t {
+ grouped_io_stats record_batch_stats;
+ grouped_io_stats io_depth_stats;
+ uint64_t record_group_padding_bytes = 0;
+ uint64_t record_group_metadata_bytes = 0;
+ uint64_t record_group_data_bytes = 0;
+};
+
}
WRITE_CLASS_DENC_BOUNDED(crimson::os::seastore::seastore_meta_t)