@@ -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