* trans_created
*/
stats.trans_created_by_src.fill(0);
- auto register_trans_created = [this, &labels_by_src](src_t src) {
- std::ostringstream oss_desc;
- oss_desc << "total number of transaction created (src="
- << src << ")";
+ for (auto& [src, src_label] : labels_by_src) {
metrics.add_group(
"cache",
{
sm::make_counter(
"trans_created",
get_by_src(stats.trans_created_by_src, src),
- sm::description(oss_desc.str()),
- {labels_by_src.find(src)->second}
+ sm::description("total number of transaction created"),
+ {src_label}
),
}
);
- };
- for (auto& [src, label] : labels_by_src) {
- register_trans_created(src);
}
/*
* trans_committed
*/
stats.trans_committed_by_src.fill(0);
- auto register_trans_committed = [this, &labels_by_src](src_t src) {
- std::ostringstream oss_desc;
- oss_desc << "total number of transaction committed (src="
- << src << ")";
+ for (auto& [src, src_label] : labels_by_src) {
+ if (src == src_t::READ) {
+ // READ transaction won't commit
+ continue;
+ }
metrics.add_group(
"cache",
{
sm::make_counter(
"trans_committed",
get_by_src(stats.trans_committed_by_src, src),
- sm::description(oss_desc.str()),
- {labels_by_src.find(src)->second}
+ sm::description("total number of transaction committed"),
+ {src_label}
),
}
);
- };
- for (auto& [src, label] : labels_by_src) {
- if (src == src_t::READ) {
- // READ transaction won't commit
- continue;
- }
- register_trans_committed(src);
}
/*
}
/**
- * read_transactions_successful
+ * trans_read_successful
*/
stats.read_transactions_successful = 0;
metrics.add_group(
"cache",
{
sm::make_counter(
- "read_trans_successful",
+ "trans_read_successful",
stats.read_transactions_successful,
- sm::description("total number of successful read transactions"),
- {}
+ sm::description("total number of successful read transactions")
),
}
);
auto& efforts = get_by_src(stats.invalidated_efforts_by_src, src);
efforts = {};
for (auto& [effort_name, effort_label] : labels_by_effort) {
- auto& effort = efforts.get_by_name(effort_name);
+ auto& effort = [&effort_name, &efforts]() -> effort_t& {
+ if (effort_name == "READ") {
+ return efforts.read;
+ } else if (effort_name == "MUTATE") {
+ return efforts.mutate;
+ } else if (effort_name == "RETIRE") {
+ return efforts.retire;
+ } else {
+ assert(effort_name == "FRESH");
+ return efforts.fresh;
+ }
+ }();
metrics.add_group(
"cache",
{
uint64_t mutate_delta_bytes = 0;
effort_t retire;
effort_t fresh;
-
- effort_t& get_by_name(const std::string& effort_name) {
- if (effort_name == "READ") {
- return read;
- } else if (effort_name == "MUTATE") {
- return mutate;
- } else if (effort_name == "RETIRE") {
- return retire;
- } else {
- ceph_assert(effort_name == "FRESH");
- return fresh;
- }
- }
};
template <typename CounterT>
counter_by_extent_t<effort_t> mutate_by_ext;
counter_by_extent_t<uint64_t> delta_bytes_by_ext;
counter_by_extent_t<effort_t> retire_by_ext;
- counter_by_extent_t<effort_t > fresh_by_ext;
+ counter_by_extent_t<effort_t> fresh_by_ext;
};
+ template <typename CounterT>
+ using counter_by_src_t = std::array<CounterT, Transaction::SRC_MAX>;
+
struct {
- std::array<uint64_t, Transaction::SRC_MAX> trans_created_by_src;
- std::array<uint64_t, Transaction::SRC_MAX> trans_committed_by_src;
- std::array<trans_byextent_efforts_t,
- Transaction::SRC_MAX> committed_efforts_by_src;
- std::array<counter_by_extent_t<uint64_t>, Transaction::SRC_MAX> trans_invalidated;
- std::array<trans_efforts_t, Transaction::SRC_MAX> invalidated_efforts_by_src;
- std::array<query_counters_t, Transaction::SRC_MAX> cache_query_by_src;
+ counter_by_src_t<uint64_t> trans_created_by_src;
+ counter_by_src_t<uint64_t> trans_committed_by_src;
+ counter_by_src_t<trans_byextent_efforts_t> committed_efforts_by_src;
+ counter_by_src_t<counter_by_extent_t<uint64_t>> trans_invalidated;
+ counter_by_src_t<trans_efforts_t> invalidated_efforts_by_src;
+ counter_by_src_t<query_counters_t> cache_query_by_src;
uint64_t read_transactions_successful;
effort_t read_effort_successful;
uint64_t dirty_bytes;
template <typename CounterT>
CounterT& get_by_src(
- std::array<CounterT, Transaction::SRC_MAX>& counters_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)];