From: Divyansh Kamboj Date: Wed, 7 Dec 2022 10:25:38 +0000 (+0530) Subject: rbd-mirror: add information about the last snapshot sync to image status X-Git-Tag: v18.1.0~293^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F49299%2Fhead;p=ceph.git rbd-mirror: add information about the last snapshot sync to image status this commit adds fields for time taken to sync and bytes in the last snapshot to the mirror image status command. Fixes: https://tracker.ceph.com/issues/58755 Signed-off-by: Divyansh Kamboj --- diff --git a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc index 221982ac258..65caf28cff1 100644 --- a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc +++ b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc @@ -298,6 +298,9 @@ bool Replayer::get_replay_status(std::string* description, m_bytes_per_snapshot); root_obj["bytes_per_snapshot"] = round_to_two_places(bytes_per_snapshot); + root_obj["last_snapshot_sync_seconds"] = m_last_snapshot_sync_seconds; + root_obj["last_snapshot_bytes"] = m_last_snapshot_bytes; + auto pending_bytes = bytes_per_snapshot * m_pending_snapshots; if (bytes_per_second > 0 && m_pending_snapshots > 0) { std::uint64_t seconds_until_synced = round_to_two_places( @@ -1110,21 +1113,23 @@ void Replayer::handle_copy_image(int r) { { std::unique_lock locker{m_lock}; + m_last_snapshot_bytes = m_snapshot_bytes; m_bytes_per_snapshot(m_snapshot_bytes); - auto time = ceph_clock_now() - m_snapshot_replay_start; + utime_t duration = ceph_clock_now() - m_snapshot_replay_start; + m_last_snapshot_sync_seconds = duration.sec(); + if (g_snapshot_perf_counters) { g_snapshot_perf_counters->inc(l_rbd_mirror_snapshot_replay_bytes, m_snapshot_bytes); g_snapshot_perf_counters->inc(l_rbd_mirror_snapshot_replay_snapshots); g_snapshot_perf_counters->tinc( - l_rbd_mirror_snapshot_replay_snapshots_time, time); + l_rbd_mirror_snapshot_replay_snapshots_time, duration); } if (m_perf_counters) { m_perf_counters->inc(l_rbd_mirror_snapshot_replay_bytes, m_snapshot_bytes); m_perf_counters->inc(l_rbd_mirror_snapshot_replay_snapshots); - m_perf_counters->tinc(l_rbd_mirror_snapshot_replay_snapshots_time, time); + m_perf_counters->tinc(l_rbd_mirror_snapshot_replay_snapshots_time, duration); } - m_snapshot_bytes = 0; } apply_image_state(); diff --git a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h index e3c4c208902..17d45f6bc80 100644 --- a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h +++ b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h @@ -238,8 +238,11 @@ private: DeepCopyHandler* m_deep_copy_handler = nullptr; TimeRollingMean m_bytes_per_second; + uint64_t m_last_snapshot_sync_seconds = 0; uint64_t m_snapshot_bytes = 0; + uint64_t m_last_snapshot_bytes = 0; + boost::accumulators::accumulator_set< uint64_t, boost::accumulators::stats< boost::accumulators::tag::rolling_mean>> m_bytes_per_snapshot{