summary refs log tree commit diff stats
path: root/migration/migration-stats.h
diff options
context:
space:
mode:
Diffstat (limited to 'migration/migration-stats.h')
-rw-r--r--migration/migration-stats.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/migration/migration-stats.h b/migration/migration-stats.h
new file mode 100644
index 0000000000..cf8a4f0410
--- /dev/null
+++ b/migration/migration-stats.h
@@ -0,0 +1,84 @@
+/*
+ * Migration stats
+ *
+ * Copyright (c) 2012-2023 Red Hat Inc
+ *
+ * Authors:
+ *  Juan Quintela <quintela@redhat.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#ifndef QEMU_MIGRATION_STATS_H
+#define QEMU_MIGRATION_STATS_H
+
+#include "qemu/stats64.h"
+
+/*
+ * These are the ram migration statistic counters.  It is loosely
+ * based on MigrationStats.  We change to Stat64 any counter that
+ * needs to be updated using atomic ops (can be accessed by more than
+ * one thread).
+ */
+typedef struct {
+    /*
+     * Number of bytes that were dirty last time that we synced with
+     * the guest memory.  We use that to calculate the downtime.  As
+     * the remaining dirty amounts to what we know that is still dirty
+     * since last iteration, not counting what the guest has dirtied
+     * since we synchronized bitmaps.
+     */
+    Stat64 dirty_bytes_last_sync;
+    /*
+     * Number of pages dirtied per second.
+     */
+    Stat64 dirty_pages_rate;
+    /*
+     * Number of times we have synchronized guest bitmaps.
+     */
+    Stat64 dirty_sync_count;
+    /*
+     * Number of times zero copy failed to send any page using zero
+     * copy.
+     */
+    Stat64 dirty_sync_missed_zero_copy;
+    /*
+     * Number of bytes sent at migration completion stage while the
+     * guest is stopped.
+     */
+    Stat64 downtime_bytes;
+    /*
+     * Number of bytes sent through multifd channels.
+     */
+    Stat64 multifd_bytes;
+    /*
+     * Number of pages transferred that were not full of zeros.
+     */
+    Stat64 normal_pages;
+    /*
+     * Number of bytes sent during postcopy.
+     */
+    Stat64 postcopy_bytes;
+    /*
+     * Number of postcopy page faults that we have handled during
+     * postcopy stage.
+     */
+    Stat64 postcopy_requests;
+    /*
+     * Number of bytes sent during precopy stage.
+     */
+    Stat64 precopy_bytes;
+    /*
+     * Total number of bytes transferred.
+     */
+    Stat64 transferred;
+    /*
+     * Number of pages transferred that were full of zeros.
+     */
+    Stat64 zero_pages;
+} MigrationAtomicStats;
+
+extern MigrationAtomicStats mig_stats;
+
+#endif