]> git.proxmox.com Git - mirror_qemu.git/commit - qapi/migration.json
migration: Add switchover ack capability
authorAvihai Horon <avihaih@nvidia.com>
Wed, 21 Jun 2023 11:11:54 +0000 (14:11 +0300)
committerCédric Le Goater <clg@redhat.com>
Fri, 30 Jun 2023 04:02:51 +0000 (06:02 +0200)
commit6574232fff6a810e1882c98aa7dcf23d6afe9a31
tree9763e011369ec71e4fd094336eba441d25940351
parent4d541f63e90c81112c298cbb35ed53e9c79deb00
migration: Add switchover ack capability

Migration downtime estimation is calculated based on bandwidth and
remaining migration data. This assumes that loading of migration data in
the destination takes a negligible amount of time and that downtime
depends only on network speed.

While this may be true for RAM, it's not necessarily true for other
migrated devices. For example, loading the data of a VFIO device in the
destination might require from the device to allocate resources, prepare
internal data structures and so on. These operations can take a
significant amount of time which can increase migration downtime.

This patch adds a new capability "switchover ack" that prevents the
source from stopping the VM and completing the migration until an ACK
is received from the destination that it's OK to do so.

This can be used by migrated devices in various ways to reduce downtime.
For example, a device can send initial precopy metadata to pre-allocate
resources in the destination and use this capability to make sure that
the pre-allocation is completed before the source VM is stopped, so it
will have full effect.

This new capability relies on the return path capability to communicate
from the destination back to the source.

The actual implementation of the capability will be added in the
following patches.

Signed-off-by: Avihai Horon <avihaih@nvidia.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Tested-by: YangHang Liu <yanghliu@redhat.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
migration/options.c
migration/options.h
qapi/migration.json