Skip to content

Commit fb985c4

Browse files
committed
cephfs_mirror: provide metrics for last successful snapshot sync
Fixes: https://tracker.ceph.com/issues/65171 Signed-off-by: Jos Collin <[email protected]>
1 parent cc721a5 commit fb985c4

File tree

1 file changed

+34
-12
lines changed

1 file changed

+34
-12
lines changed

src/tools/cephfs_mirror/PeerReplayer.cc

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ enum {
3838
l_cephfs_mirror_peer_replayer_snap_sync_failures,
3939
l_cephfs_mirror_peer_replayer_avg_sync_time,
4040
l_cephfs_mirror_peer_replayer_sync_bytes,
41+
l_cephfs_mirror_peer_replayer_last_synced_start,
42+
l_cephfs_mirror_peer_replayer_last_synced_end,
43+
l_cephfs_mirror_peer_replayer_last_synced_duration,
44+
l_cephfs_mirror_peer_replayer_last_synced_bytes,
4145
l_cephfs_mirror_peer_replayer_last,
4246
};
4347

@@ -203,6 +207,14 @@ PeerReplayer::PeerReplayer(CephContext *cct, FSMirror *fs_mirror,
203207
"avg_sync_time", "Average Sync Time", "asyn", prio);
204208
plb.add_u64_counter(l_cephfs_mirror_peer_replayer_sync_bytes,
205209
"sync_bytes", "Sync Bytes", "sbye", prio);
210+
plb.add_time(l_cephfs_mirror_peer_replayer_last_synced_start,
211+
"last_synced_start", "Last Synced Start", "lsst", prio);
212+
plb.add_time(l_cephfs_mirror_peer_replayer_last_synced_end,
213+
"last_synced_end", "Last Synced End", "lsen", prio);
214+
plb.add_time(l_cephfs_mirror_peer_replayer_last_synced_duration,
215+
"last_synced_duration", "Last Synced Duration", "lsdn", prio);
216+
plb.add_u64_counter(l_cephfs_mirror_peer_replayer_last_synced_bytes,
217+
"last_synced_bytes", "Last Synced Bytes", "lsbt", prio);
206218
m_perf_counters = plb.create_perf_counters();
207219
m_cct->get_perfcounters_collection()->add(m_perf_counters);
208220
}
@@ -751,7 +763,7 @@ int PeerReplayer::remote_file_op(const std::string &dir_root, const std::string
751763
return r;
752764
}
753765
if (m_perf_counters) {
754-
m_perf_counters->inc(l_cephfs_mirror_peer_replayer_sync_bytes, stx.stx_size);
766+
m_perf_counters->inc(l_cephfs_mirror_peer_replayer_sync_bytes, stx.stx_size);
755767
}
756768
inc_sync_bytes(dir_root, stx.stx_size);
757769
} else if (S_ISLNK(stx.stx_mode)) {
@@ -1669,9 +1681,17 @@ int PeerReplayer::do_sync_snaps(const std::string &dir_root) {
16691681
"cephfs_mirror_max_snapshot_sync_per_cycle");
16701682

16711683
dout(10) << ": synchronizing from snap-id=" << it->first << dendl;
1684+
double start = 0;
1685+
double end = 0;
1686+
double duration = 0;
16721687
for (; it != local_snap_map.end(); ++it) {
1688+
if (m_perf_counters) {
1689+
start = std::chrono::duration_cast<std::chrono::milliseconds>(clock::now().time_since_epoch()).count();
1690+
utime_t t;
1691+
t.set_from_double(start);
1692+
m_perf_counters->tset(l_cephfs_mirror_peer_replayer_last_synced_start, t);
1693+
}
16731694
set_current_syncing_snap(dir_root, it->first, it->second);
1674-
auto start = clock::now();
16751695
boost::optional<Snapshot> prev = boost::none;
16761696
if (last_snap_id != 0) {
16771697
prev = std::make_pair(last_snap_name, last_snap_id);
@@ -1685,16 +1705,18 @@ int PeerReplayer::do_sync_snaps(const std::string &dir_root) {
16851705
}
16861706
if (m_perf_counters) {
16871707
m_perf_counters->inc(l_cephfs_mirror_peer_replayer_snaps_synced);
1688-
}
1689-
std::chrono::duration<double> duration = clock::now() - start;
1690-
1691-
utime_t d;
1692-
d.set_from_double(duration.count());
1693-
if (m_perf_counters) {
1694-
m_perf_counters->tinc(l_cephfs_mirror_peer_replayer_avg_sync_time, d);
1695-
}
1696-
1697-
set_last_synced_stat(dir_root, it->first, it->second, duration.count());
1708+
end = std::chrono::duration_cast<std::chrono::milliseconds>(clock::now().time_since_epoch()).count();
1709+
utime_t t;
1710+
t.set_from_double(end);
1711+
m_perf_counters->tset(l_cephfs_mirror_peer_replayer_last_synced_end, t);
1712+
duration = end - start;
1713+
t.set_from_double(duration);
1714+
m_perf_counters->tinc(l_cephfs_mirror_peer_replayer_avg_sync_time, t);
1715+
m_perf_counters->tset(l_cephfs_mirror_peer_replayer_last_synced_duration, t);
1716+
m_perf_counters->set(l_cephfs_mirror_peer_replayer_last_synced_bytes, m_snap_sync_stats.at(dir_root).sync_bytes);
1717+
}
1718+
1719+
set_last_synced_stat(dir_root, it->first, it->second, duration);
16981720
if (--snaps_per_cycle == 0) {
16991721
break;
17001722
}

0 commit comments

Comments
 (0)