mirror of
https://github.com/ceph/ceph
synced 2025-03-25 11:48:05 +00:00
crimson/os/seastore: add metrics for extent rewrite version
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
This commit is contained in:
parent
a12808e40c
commit
bbe7a1beac
@ -645,6 +645,35 @@ void Cache::register_metrics()
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* rewrite version
|
||||
*/
|
||||
metrics.add_group(
|
||||
"cache",
|
||||
{
|
||||
sm::make_counter(
|
||||
"version_count_dirty",
|
||||
stats.committed_dirty_version.num,
|
||||
sm::description("total number of rewrite-dirty extents")
|
||||
),
|
||||
sm::make_counter(
|
||||
"version_sum_dirty",
|
||||
stats.committed_dirty_version.version,
|
||||
sm::description("sum of the version from rewrite-dirty extents")
|
||||
),
|
||||
sm::make_counter(
|
||||
"version_count_reclaim",
|
||||
stats.committed_reclaim_version.num,
|
||||
sm::description("total number of rewrite-reclaim extents")
|
||||
),
|
||||
sm::make_counter(
|
||||
"version_sum_reclaim",
|
||||
stats.committed_reclaim_version.version,
|
||||
sm::description("sum of the version from rewrite-reclaim extents")
|
||||
),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
void Cache::add_extent(CachedExtentRef ref)
|
||||
@ -1247,6 +1276,15 @@ record_t Cache::prepare_record(
|
||||
efforts.inline_record_metadata_bytes +=
|
||||
(record.size.get_raw_mdlength() - record.get_delta_size());
|
||||
|
||||
auto &rewrite_version_stats = t.get_rewrite_version_stats();
|
||||
if (trans_src == Transaction::src_t::CLEANER_TRIM) {
|
||||
stats.committed_dirty_version.increment_stat(rewrite_version_stats);
|
||||
} else if (trans_src == Transaction::src_t::CLEANER_RECLAIM) {
|
||||
stats.committed_reclaim_version.increment_stat(rewrite_version_stats);
|
||||
} else {
|
||||
assert(rewrite_version_stats.is_clear());
|
||||
}
|
||||
|
||||
return record;
|
||||
}
|
||||
|
||||
|
@ -1165,6 +1165,9 @@ private:
|
||||
|
||||
std::array<uint64_t, NUM_SRC_COMB> trans_conflicts_by_srcs;
|
||||
counter_by_src_t<uint64_t> trans_conflicts_by_unknown;
|
||||
|
||||
version_stat_t committed_dirty_version;
|
||||
version_stat_t committed_reclaim_version;
|
||||
} stats;
|
||||
|
||||
template <typename CounterT>
|
||||
|
@ -41,6 +41,25 @@ inline std::ostream& operator<<(std::ostream& out, const io_stat_t& stat) {
|
||||
return out << stat.num << "(" << stat.bytes << "B)";
|
||||
}
|
||||
|
||||
struct version_stat_t {
|
||||
uint64_t num = 0;
|
||||
uint64_t version = 0;
|
||||
|
||||
bool is_clear() const {
|
||||
return (num == 0 && version == 0);
|
||||
}
|
||||
|
||||
void increment(extent_version_t v) {
|
||||
++num;
|
||||
version += v;
|
||||
}
|
||||
|
||||
void increment_stat(const version_stat_t& stat) {
|
||||
num += stat.num;
|
||||
version += stat.version;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Transaction
|
||||
*
|
||||
@ -323,6 +342,7 @@ public:
|
||||
lba_tree_stats = {};
|
||||
backref_tree_stats = {};
|
||||
ool_write_stats = {};
|
||||
rewrite_version_stats = {};
|
||||
to_release = NULL_SEG_ID;
|
||||
conflicted = false;
|
||||
if (!has_reset) {
|
||||
@ -378,6 +398,9 @@ public:
|
||||
ool_write_stats_t& get_ool_write_stats() {
|
||||
return ool_write_stats;
|
||||
}
|
||||
version_stat_t& get_rewrite_version_stats() {
|
||||
return rewrite_version_stats;
|
||||
}
|
||||
|
||||
private:
|
||||
friend class Cache;
|
||||
@ -445,6 +468,7 @@ private:
|
||||
tree_stats_t lba_tree_stats;
|
||||
tree_stats_t backref_tree_stats;
|
||||
ool_write_stats_t ool_write_stats;
|
||||
version_stat_t rewrite_version_stats;
|
||||
|
||||
///< if != NULL_SEG_ID, release this segment after completion
|
||||
segment_id_t to_release = NULL_SEG_ID;
|
||||
|
@ -500,6 +500,7 @@ TransactionManager::rewrite_extent_ret TransactionManager::rewrite_extent(
|
||||
LOG_PREFIX(TransactionManager::rewrite_extent);
|
||||
|
||||
if (is_backref_node(extent->get_type())) {
|
||||
t.get_rewrite_version_stats().increment(extent->get_version());
|
||||
return backref_manager->rewrite_extent(t, extent);
|
||||
}
|
||||
|
||||
@ -512,6 +513,8 @@ TransactionManager::rewrite_extent_ret TransactionManager::rewrite_extent(
|
||||
extent = updated;
|
||||
}
|
||||
|
||||
t.get_rewrite_version_stats().increment(extent->get_version());
|
||||
|
||||
if (extent->get_type() == extent_types_t::ROOT) {
|
||||
DEBUGT("marking root for rewrite -- {}", t, *extent);
|
||||
cache->duplicate_for_write(t, extent);
|
||||
|
Loading…
Reference in New Issue
Block a user