diff options
Diffstat (limited to 'migration/migration-stats.h')
| -rw-r--r-- | migration/migration-stats.h | 84 |
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 |