/qemu/hw/vfio/ |
H A D | migration.c | 2 * Migration support for VFIO devices 20 #include "hw/vfio/vfio-migration.h" 21 #include "migration/misc.h" 22 #include "migration/savevm.h" 23 #include "migration/vmstate.h" 24 #include "migration/qemu-file.h" 25 #include "migration/register.h" 26 #include "migration/blocker.h" 27 #include "migration-multifd.h" 34 #include "vfio-migration-internal.h" [all …]
|
H A D | migration-multifd.c | 2 * Multifd VFIO migration 14 #include "migration/misc.h" 22 #include "migration/qemu-file.h" 23 #include "migration-multifd.h" 24 #include "vfio-migration-internal.h" 112 VFIOMigration *migration = vbasedev->migration; in vfio_load_state_buffer_insert() local 113 VFIOMultifd *multifd = migration->multifd; in vfio_load_state_buffer_insert() 141 VFIOMigration *migration = vbasedev->migration; in vfio_multifd_load_state_buffer() local 142 VFIOMultifd *multifd = migration->multifd; in vfio_multifd_load_state_buffer() 203 VFIOMigration *migration = vbasedev->migration; in vfio_load_bufs_thread_load_config() local [all …]
|
/qemu/docs/devel/migration/ |
H A D | vfio.rst | 2 VFIO device migration 5 Migration of virtual machine involves saving the state for each device that 10 Migration of VFIO devices consists of two phases: the optional pre-copy phase, 13 transferred. The iterative pre-copy phase of migration allows for the guest to 20 enabling "switchover-ack" migration capability. 21 VFIO migration uAPI defines "initial bytes" as part of its pre-copy data stream 23 before stopping the source VM. Enabling this migration capability will 26 To support migration of multiple devices that might do P2P transactions between 27 themselves, VFIO migration uAPI defines an intermediate P2P quiescent state. 33 All the devices that support P2P migration are first transitioned to the P2P [all …]
|
H A D | main.rst | 4 Migration framework 20 requested: migration. This means that QEMU is able to start in one 24 Next was the "live migration" functionality. This is important 27 migration allows the guest to continue running while the state is 30 unresponsive during live migration is the low hundred of milliseconds 38 The migration stream is normally just a byte stream that can be passed 41 - tcp migration: do the migration using tcp sockets 42 - unix migration: do the migration using unix sockets 43 - exec migration: do the migration using the stdin/stdout through a process. 44 - fd migration: do the migration using a file descriptor that is [all …]
|
H A D | postcopy.rst | 7 'Postcopy' migration is a way to deal with migrations that refuse to converge 9 the amount of migration traffic and time it takes, the down side is that during 16 Postcopy can be combined with precopy (i.e. normal migration) so that if precopy 23 destination) prior to the start of migration: 27 The normal commands are then used to start a migration, which is still 33 It can be issued immediately after migration is started or any 34 time later on. Issuing it after the end of a migration is harmless. 36 Blocktime is a postcopy live migration metric, intended to show how 66 Set at the start of migration if postcopy is enabled, even 70 The destination will fail early in migration at this point if the [all …]
|
H A D | compatibility.rst | 7 When we do migration, we have two QEMU processes: the source and the 29 First of all, migration is only supposed to work if you use the same 77 This migration is known as newer to older. We need to make sure 79 migration to qemu-5.1. Notice that we can't make updates to 85 This migration is known as older to newer. We need to make sure 133 When we are doing migration, if we migrate from a device that has 4 136 migration. 154 correct. migration works. 161 correct. migration works. 183 migration A -> B is case 6, so number of queues needs to be 1. [all …]
|
H A D | mapped-ram.rst | 5 supplement the existing ``file:`` migration and make it compatible 6 with ``multifd``. This enables parallel migration of a guest's RAM to 10 directly to offsets in the resulting migration file. This enables the 12 guest is constantly dirtying pages (i.e. live migration). Another 17 usage of O_DIRECT for save/restore of the migration stream as the 31 Use a ``file:`` URL for migration: 33 ``migrate file:/path/to/migration/file`` 35 Mapped-ram migration is best done non-live, i.e. by stopping the VM on 45 The mapped-ram feature was designed for use cases where the migration 54 that's the ideal scenario for mapped-ram migration. Not having to [all …]
|
H A D | best-practices.rst | 8 The migration stream can be analyzed thanks to ``scripts/analyze-migration.py``. 17 $ ./scripts/analyze-migration.py -f mig 24 See also ``analyze-migration.py -h`` help for more options. 29 Migration migrates the copies of RAM and ROM, and thus when running 35 to hold the firmware and thus migration can fail. In practice it's best 40 emulation code can work with older firmware to allow forward migration. 42 - Care should be taken with newer firmware so that backward migration
|
/qemu/tests/qemu-iotests/ |
H A D | 234.out | 2 Enabling migration QMP events on A... 5 Enabling migration QMP events on B... 9 Starting migration to B... 11 {"data": {"status": "setup"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "seconds… 12 {"data": {"status": "active"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "second… 13 {"data": {"status": "device"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "second… 14 {"data": {"status": "completed"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "sec… 15 {"data": {"status": "active"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "second… 16 {"data": {"status": "completed"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "sec… 24 Enabling migration QMP events on A... [all …]
|
H A D | 262.out | 2 Enabling migration QMP events on B... 5 Enabling migration QMP events on A... 7 Starting migration to B... 9 {"data": {"status": "setup"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "seconds… 10 {"data": {"status": "active"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "second… 11 {"data": {"status": "device"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "second… 12 {"data": {"status": "completed"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "sec… 13 {"data": {"status": "active"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "second… 14 {"data": {"status": "completed"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "sec…
|
H A D | 203.out | 5 Enabling migration QMP events... 7 Starting migration... 9 {"data": {"status": "setup"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "seconds… 10 {"data": {"status": "active"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "second… 11 {"data": {"status": "device"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "second… 12 {"data": {"status": "completed"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "sec…
|
H A D | 194.out | 11 Starting migration... 15 {"data": {"status": "setup"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "seconds… 16 {"data": {"status": "active"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "second… 17 {"data": {"status": "device"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "second… 18 {"data": {"status": "completed"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "sec… 24 Wait for migration completion on target... 25 {"data": {"status": "completed"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "sec…
|
/qemu/include/migration/ |
H A D | blocker.h | 2 * QEMU migration blockers 17 #include "qapi/qapi-types-migration.h" 22 * @migrate_add_blocker - prevent all modes of migration from proceeding 24 * @reasonp - address of an error to be returned whenever migration is attempted 26 * @errp - [out] The reason (if any) we cannot block migration right now. 37 * @migrate_add_blocker_internal - prevent all modes of migration from 40 * @reasonp - address of an error to be returned whenever migration is attempted 42 * @errp - [out] The reason (if any) we cannot block migration right now. 46 * Some of the migration blockers can be temporary (e.g., for a few seconds), 57 * @migrate_del_blocker - remove a migration blocker from all modes and free it. [all …]
|
H A D | misc.h | 2 * QEMU migration miscellaneus exported functions 18 #include "qapi/qapi-types-migration.h" 20 #include "migration/client-options.h" 22 /* migration/ram.c */ 45 /* migration/block.c */ 49 /* migration/savevm.c */ 55 /* migration/migration.c */ 82 * Register the notifier @notify to be called when a migration event occurs 101 /* True if incoming migration entered POSTCOPY_INCOMING_DISCARD */ 104 /* True if incoming migration entered POSTCOPY_INCOMING_ADVISE */ [all …]
|
/qemu/qapi/ |
H A D | migration.json | 6 # = Migration 15 # Detailed migration status. 22 # @total: total amount of bytes involved in the migration process 80 # Detailed XBZRLE migration cache statistics 106 # Detailed migration compression statistics 128 # An enumeration of migration status. 130 # @none: no migration has ever happened. 132 # @setup: migration process has been initiated. 134 # @cancelling: in the process of cancelling migration. 136 # @cancelled: cancelling migration is finished. [all …]
|
/qemu/tests/qtest/migration/ |
H A D | framework.h | 15 #include <qapi/qapi-types-migration.h> 40 * created, but before the migration is started. This can 41 * be used to set migration parameters and capabilities. 50 * A hook that runs after the migration has finished, 53 * due to migration error) 63 * Our goal is to ensure that we run a single full migration 67 * We can't directly synchronize with the start of a migration 71 * Initially we set the migration bandwidth to an insanely 73 * guarantees migration will never complete. 76 * so we can't let the entire migration pass run at this speed. [all …]
|
H A D | postcopy-tests.c | 2 * QTest testcases for postcopy migration 15 #include "migration/framework.h" 16 #include "migration/migration-util.h" 89 migration_test_add("/migration/postcopy/plain", test_postcopy); in migration_test_add_postcopy_smoke() 90 migration_test_add("/migration/postcopy/recovery/plain", in migration_test_add_postcopy_smoke() 92 migration_test_add("/migration/postcopy/preempt/plain", in migration_test_add_postcopy_smoke() 129 migration_test_add("/migration/postcopy/preempt/recovery/plain", in migration_test_add_postcopy() 133 "/migration/postcopy/recovery/double-failures/handshake", in migration_test_add_postcopy() 137 "/migration/postcopy/recovery/double-failures/reconnect", in migration_test_add_postcopy() 140 migration_test_add("/migration/multifd+postcopy/plain", in migration_test_add_postcopy() [all …]
|
H A D | misc-tests.c | 2 * QTest testcases for migration 17 #include "migration/framework.h" 18 #include "migration/migration-qmp.h" 19 #include "migration/migration-util.h" 21 #define ANALYZE_SCRIPT "scripts/analyze-migration.py" 87 g_test_message("Failed to analyze the migration stream"); in test_analyze_script() 142 * UUID validation is at the begin of migration. So, the main process of in do_test_validate_uuid() 143 * migration is not interesting for us here. Thus, set huge downtime for in do_test_validate_uuid() 144 * very fast migration. in do_test_validate_uuid() 218 * 'uri' and 'channels' validation is checked even before the migration in do_test_validate_uri_channel() [all …]
|
H A D | file-tests.c | 2 * QTest testcases for migration to file 15 #include "migration/framework.h" 16 #include "migration/migration-qmp.h" 17 #include "migration/migration-util.h" 212 * Remove the fdsets after migration, otherwise a second migration in migrate_hook_end_multifd_mapped_ram_fdset() 219 * Make sure no fdsets are left after migration, otherwise a in migrate_hook_end_multifd_mapped_ram_fdset() 220 * second migration would fail due fdset reuse. in migrate_hook_end_multifd_mapped_ram_fdset() 299 migration_test_add("/migration/precopy/file", in migration_test_add_file_smoke() 302 migration_test_add("/migration/multifd/file/mapped-ram/dio", in migration_test_add_file_smoke() 316 migration_test_add("/migration/precopy/file/offset", in migration_test_add_file() [all …]
|
H A D | compression-tests.c | 2 * QTest testcases for migration compression 15 #include "migration/framework.h" 16 #include "migration/migration-qmp.h" 17 #include "migration/migration-util.h" 184 migration_test_add("/migration/multifd/tcp/plain/zlib", in migration_test_add_compression_smoke() 199 migration_test_add("/migration/multifd/tcp/plain/zstd", in migration_test_add_compression() 202 migration_test_add("/migration/multifd+postcopy/tcp/plain/zstd", in migration_test_add_compression() 208 migration_test_add("/migration/multifd/tcp/plain/qatzip", in migration_test_add_compression() 213 migration_test_add("/migration/multifd/tcp/plain/qpl", in migration_test_add_compression() 218 migration_test_add("/migration/multifd/tcp/plain/uadk", in migration_test_add_compression() [all …]
|
H A D | tls-tests.c | 2 * QTest testcases for TLS migration 16 #include "migration/framework.h" 17 #include "migration/migration-qmp.h" 18 #include "migration/migration-util.h" 736 * migration state, and so it exits with I/O failure. in test_multifd_tcp_tls_x509_mismatch_host() 741 * to load migration state, and thus just aborts the migration in test_multifd_tcp_tls_x509_mismatch_host() 788 migration_test_add("/migration/precopy/tcp/tls/psk/match", in migration_test_add_tls_smoke() 802 migration_test_add("/migration/precopy/unix/tls/psk", in migration_test_add_tls() 811 migration_test_add("/migration/postcopy/tls/psk", in migration_test_add_tls() 813 migration_test_add("/migration/postcopy/recovery/tls/psk", in migration_test_add_tls() [all …]
|
H A D | precopy-tests.c | 2 * QTest testcase for precopy migration 17 #include "migration/bootfile.h" 18 #include "migration/framework.h" 19 #include "migration/migration-qmp.h" 20 #include "migration/migration-util.h" 23 #include "qapi-types-migration.h" 107 * During migration over RDMA, it will try to pin portions of guest memory, 133 #define RDMA_MIGRATION_HELPER "scripts/rdma-migration-helper.sh" 179 "# Optional: run 'scripts/rdma-migration-helper.sh clean' " in __test_precopy_rdma_plain() 243 /* Create two connected sockets for migration */ in migrate_hook_start_fd() [all …]
|
H A D | cpr-tests.c | 15 #include "migration/framework.h" 16 #include "migration/migration-qmp.h" 17 #include "migration/migration-util.h" 55 * migration, and cannot connect synchronously to the monitor, so defer 128 migration_test_add("/migration/mode/reboot", test_mode_reboot); in migration_test_add_cpr() 132 migration_test_add("/migration/mode/transfer", test_mode_transfer); in migration_test_add_cpr() 133 migration_test_add("/migration/mode/transfer/defer", in migration_test_add_cpr()
|
/qemu/docs/ |
H A D | rdma.txt | 2 RDMA Live Migration Specification, Version # 1 18 * RDMA Migration Protocol Description 21 * Migration of VM's ram 28 RDMA helps make your migration more deterministic under heavy load because 32 migration, under certain types of memory-bound workloads, may take a more 33 unpredictable amount of time to complete the migration if the amount of 34 memory tracked during each live migration iteration round cannot keep pace 39 migration using RDMA is capable of using both technologies because of 47 for a working build of QEMU to run successfully using RDMA Migration. 52 Use of RDMA during migration requires pinning and registering memory [all …]
|
/qemu/migration/ |
H A D | migration.h | 2 * QEMU live migration 19 #include "qapi/qapi-types-migration.h" 29 #include "migration/misc.h" 91 /* State for the incoming migration */ 96 /* A hook to allow cleanup at the end of incoming migration */ 181 * The incoming migration coroutine, non-NULL during qemu_loadvm_state(). 182 * Used to wake the migration incoming coroutine from rdma code. How much is 197 * live migration, to calculate vCPU block time 250 /* Do exit on incoming migration failure */ 262 #define TYPE_MIGRATION "migration" [all …]
|