From: Jos Collin Date: Tue, 9 Apr 2024 11:36:54 +0000 (+0530) Subject: cephfs_mirror: provide metrics for last successful snapshot sync X-Git-Tag: testing/wip-vshankar-testing-20250110.122509-reef-debug~53^2~10 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=36a436bca13c5e4272a3a9794431ef778293c1ed;p=ceph-ci.git cephfs_mirror: provide metrics for last successful snapshot sync Fixes: https://tracker.ceph.com/issues/65171 Signed-off-by: Jos Collin (cherry picked from commit fb985c4830adb34c5d982fdc366a79246f8cdcb2) --- diff --git a/src/tools/cephfs_mirror/PeerReplayer.cc b/src/tools/cephfs_mirror/PeerReplayer.cc index b278731b023..7d7f63c8085 100644 --- a/src/tools/cephfs_mirror/PeerReplayer.cc +++ b/src/tools/cephfs_mirror/PeerReplayer.cc @@ -37,6 +37,10 @@ enum { l_cephfs_mirror_peer_replayer_snap_sync_failures, l_cephfs_mirror_peer_replayer_avg_sync_time, l_cephfs_mirror_peer_replayer_sync_bytes, + l_cephfs_mirror_peer_replayer_last_synced_start, + l_cephfs_mirror_peer_replayer_last_synced_end, + l_cephfs_mirror_peer_replayer_last_synced_duration, + l_cephfs_mirror_peer_replayer_last_synced_bytes, l_cephfs_mirror_peer_replayer_last, }; @@ -196,6 +200,14 @@ PeerReplayer::PeerReplayer(CephContext *cct, FSMirror *fs_mirror, "avg_sync_time", "Average Sync Time", "asyn", prio); plb.add_u64_counter(l_cephfs_mirror_peer_replayer_sync_bytes, "sync_bytes", "Sync Bytes", "sbye", prio); + plb.add_time(l_cephfs_mirror_peer_replayer_last_synced_start, + "last_synced_start", "Last Synced Start", "lsst", prio); + plb.add_time(l_cephfs_mirror_peer_replayer_last_synced_end, + "last_synced_end", "Last Synced End", "lsen", prio); + plb.add_time(l_cephfs_mirror_peer_replayer_last_synced_duration, + "last_synced_duration", "Last Synced Duration", "lsdn", prio); + plb.add_u64_counter(l_cephfs_mirror_peer_replayer_last_synced_bytes, + "last_synced_bytes", "Last Synced Bytes", "lsbt", prio); m_perf_counters = plb.create_perf_counters(); m_cct->get_perfcounters_collection()->add(m_perf_counters); } @@ -744,7 +756,7 @@ int PeerReplayer::remote_file_op(const std::string &dir_root, const std::string return r; } if (m_perf_counters) { - m_perf_counters->inc(l_cephfs_mirror_peer_replayer_sync_bytes, stx.stx_size); + m_perf_counters->inc(l_cephfs_mirror_peer_replayer_sync_bytes, stx.stx_size); } inc_sync_bytes(dir_root, stx.stx_size); } else if (S_ISLNK(stx.stx_mode)) { @@ -1496,9 +1508,17 @@ int PeerReplayer::do_sync_snaps(const std::string &dir_root) { "cephfs_mirror_max_snapshot_sync_per_cycle"); dout(10) << ": synchronizing from snap-id=" << it->first << dendl; + double start = 0; + double end = 0; + double duration = 0; for (; it != local_snap_map.end(); ++it) { + if (m_perf_counters) { + start = std::chrono::duration_cast(clock::now().time_since_epoch()).count(); + utime_t t; + t.set_from_double(start); + m_perf_counters->tset(l_cephfs_mirror_peer_replayer_last_synced_start, t); + } set_current_syncing_snap(dir_root, it->first, it->second); - auto start = clock::now(); boost::optional prev = boost::none; if (last_snap_id != 0) { prev = std::make_pair(last_snap_name, last_snap_id); @@ -1512,16 +1532,18 @@ int PeerReplayer::do_sync_snaps(const std::string &dir_root) { } if (m_perf_counters) { m_perf_counters->inc(l_cephfs_mirror_peer_replayer_snaps_synced); - } - std::chrono::duration duration = clock::now() - start; - - utime_t d; - d.set_from_double(duration.count()); - if (m_perf_counters) { - m_perf_counters->tinc(l_cephfs_mirror_peer_replayer_avg_sync_time, d); + end = std::chrono::duration_cast(clock::now().time_since_epoch()).count(); + utime_t t; + t.set_from_double(end); + m_perf_counters->tset(l_cephfs_mirror_peer_replayer_last_synced_end, t); + duration = end - start; + t.set_from_double(duration); + m_perf_counters->tinc(l_cephfs_mirror_peer_replayer_avg_sync_time, t); + m_perf_counters->tset(l_cephfs_mirror_peer_replayer_last_synced_duration, t); + m_perf_counters->set(l_cephfs_mirror_peer_replayer_last_synced_bytes, m_snap_sync_stats.at(dir_root).sync_bytes); } - set_last_synced_stat(dir_root, it->first, it->second, duration.count()); + set_last_synced_stat(dir_root, it->first, it->second, duration); if (--snaps_per_cycle == 0) { break; }