aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Xu <peterx@redhat.com>2025-06-13 10:07:59 -0400
committerFabiano Rosas <farosas@suse.de>2025-07-11 10:37:36 -0300
commitf1549da610dc3d37da4de0e3ba7374c5316af716 (patch)
tree5af20061de5abd00f998016ec155d8a3a033fb24
parentff9dfc41d9e74651d565a3cad80dbaac3cde1eb9 (diff)
downloadqemu-f1549da610dc3d37da4de0e3ba7374c5316af716.zip
qemu-f1549da610dc3d37da4de0e3ba7374c5316af716.tar.gz
qemu-f1549da610dc3d37da4de0e3ba7374c5316af716.tar.bz2
migration/ram: Add tracepoints for ram_save_complete()
Take notes on start/end state of dirty pages for the whole system. Reviewed-by: Juraj Marcin <jmarcin@redhat.com> Link: https://lore.kernel.org/r/20250613140801.474264-10-peterx@redhat.com Signed-off-by: Peter Xu <peterx@redhat.com> Signed-off-by: Fabiano Rosas <farosas@suse.de>
-rw-r--r--migration/ram.c5
-rw-r--r--migration/trace-events1
2 files changed, 6 insertions, 0 deletions
diff --git a/migration/ram.c b/migration/ram.c
index aa76f0a..e4871b4 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3290,6 +3290,8 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
RAMState *rs = *temp;
int ret = 0;
+ trace_ram_save_complete(rs->migration_dirty_pages, 0);
+
rs->last_stage = !migration_in_colo_state();
WITH_RCU_READ_LOCK_GUARD() {
@@ -3353,6 +3355,9 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
}
qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
+
+ trace_ram_save_complete(rs->migration_dirty_pages, 1);
+
return qemu_fflush(f);
}
diff --git a/migration/trace-events b/migration/trace-events
index c506e11..dcd8fe9 100644
--- a/migration/trace-events
+++ b/migration/trace-events
@@ -105,6 +105,7 @@ ram_load_postcopy_loop(int channel, uint64_t addr, int flags) "chan=%d addr=0x%"
ram_postcopy_send_discard_bitmap(void) ""
ram_save_page(const char *rbname, uint64_t offset, void *host) "%s: offset: 0x%" PRIx64 " host: %p"
ram_save_queue_pages(const char *rbname, size_t start, size_t len) "%s: start: 0x%zx len: 0x%zx"
+ram_save_complete(uint64_t dirty_pages, int done) "dirty=%" PRIu64 ", done=%d"
ram_dirty_bitmap_request(char *str) "%s"
ram_dirty_bitmap_reload_begin(char *str) "%s"
ram_dirty_bitmap_reload_complete(char *str) "%s"