From: Dominik Csapak <d.csapak@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH guest-common/qemu-server/manager/docs v7] implement experimental vgpu live migration
Date: Tue, 11 Mar 2025 14:20:38 +0100 [thread overview]
Message-ID: <20250311132055.2826686-1-d.csapak@proxmox.com> (raw)
== Summmary ==
This is implemented for mapped resources. This requires driver and
hardware support, but aside from nvidia vgpus there don't seem to be
many drivers (if any) that do support that.
qemu already supports that for vfio-pci devices, so nothing to be done
there besides actively enabling it.
Since we currently can't properly test it here and very much depends on
hardware/driver support, mark it as experimental everywhere
(docs/api/gui). (i tested it with a single server with multiple pve
"containers" that each got several virtual functions, so the migration
was actually to the same hardware but via our stack between two
different qemu processes)
i opted for marking them migratable at the mapping level, but we could
theoretically also put it in the hostpciX config instead. (though imho
it fits better in the cluster-wide resource mapping config)
also the naming/texts could probably be improved, but i think
'live-migration-capable' is very descriptive and i didn't want to use an
overly short name for it (which can be confusing, see the 'shared' flag
for storages)
== Dependencies ==
qemu-server depend on pve-guest-common and require a bumped pve-common
pve-manager depends on pve-guest-common and qemu-server
== Changelog ==
changes from v6:
* rebase on master
* include christophs and fioans reviewed-by where appropriate
* fixed some nits (see individual patches)
* don't add live migratable hostpci devices to 'local_resources' as blockers
* add a new patch to omit mapped hostpci devices to 'local_resources' as
blockers (like it was intended in the first place)
-> this make one of the bulk migration patches unnecessary so I dropped it
* don't change the check for bulk migration preconditions
(was wrong for other local resources)
changes from v5:
* rebased on master
* new common patch that was missing last time
* dropped the move of find_on_current_node, since it only makes
our lives harder and we don't gain much from it.
-> this also fixed some bugs that were there in v5 due to
the move.
* reordered some patches, so the dependencies are clearer
* added a patch that adds a state-migration summary for live
migration (so we can see how much state was actually transferred)
* added missing colon in log output
changes from v4:
* rebased on master (some work due to the recent nvidia changes)
* incorporated thomas/alexanders feedback from v4
changes from v3:
* rebased on master
* split first guest-common patch into 3
* instead of merging keys, just write all expected keys in to expected_props
* made $cfg optional so it does not break callers that don't call it
* added patch to fix the cfg2cmd tests for mdev check
* added patch to show vfio state transferred for migration
* incorporated fionas feedback (mostly minor stuff)
changes from v2:
* rebased on master
* rework the rework of the properties check (pve-guest-common 1/4)
* properly check mdev in the gui (pve-manager 1/5)
pve-guest-common:
Dominik Csapak (2):
mapping: pci: check the mdev configuration on the device too
mapping: pci: add 'live-migration-capable' flag to mappings
src/PVE/Mapping/PCI.pm | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
qemu-server:
Dominik Csapak (9):
tests: cfg2cmd: fix mdev tests
pci: mapping: check mdev config against hardware
pci: set 'enable-migration' to on for live-migration marked mapped
devices
check_local_resources: add more info per mapped device and return as
hash
check_local_resources: allow mapped devices for offline migration
api: enable live migration for marked mapped pci devices
api: include not mapped resources for running vms in migrate
preconditions
migrate: show vfio state transferred too
migrate: add transfer summary
PVE/API2/Qemu.pm | 59 +++++++++++++++++++-------------
PVE/QemuMigrate.pm | 46 +++++++++++++++++++++----
PVE/QemuServer.pm | 24 +++++++++----
PVE/QemuServer/PCI.pm | 10 +++++-
test/run_config2command_tests.pl | 2 +-
5 files changed, 101 insertions(+), 40 deletions(-)
pve-manager:
Dominik Csapak (4):
mapping: pci: include mdev in config checks
bulk migrate: improve precondition checks
ui: adapt migration window to precondition api change
fix #5175: ui: allow configuring and live migration of mapped pci
resources
PVE/API2/Cluster/Mapping/PCI.pm | 2 +-
PVE/API2/Nodes.pm | 12 ++++++++
www/manager6/dc/PCIMapView.js | 8 +++++
www/manager6/window/Migrate.js | 51 ++++++++++++++++++++-----------
www/manager6/window/PCIMapEdit.js | 20 +++++++++---
5 files changed, 70 insertions(+), 23 deletions(-)
pve-docs:
Dominik Csapak (2):
qm: resource mapping: add description for `mdev` option
qm: resource mapping: document `live-migration-capable` setting
qm.adoc | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next reply other threads:[~2025-03-11 13:22 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-11 13:20 Dominik Csapak [this message]
2025-03-11 13:20 ` [pve-devel] [PATCH guest-common v7 1/2] mapping: pci: check the mdev configuration on the device too Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH guest-common v7 2/2] mapping: pci: add 'live-migration-capable' flag to mappings Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH qemu-server v7 1/9] tests: cfg2cmd: fix mdev tests Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH qemu-server v7 2/9] pci: mapping: check mdev config against hardware Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH qemu-server v7 3/9] pci: set 'enable-migration' to on for live-migration marked mapped devices Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH qemu-server v7 4/9] check_local_resources: add more info per mapped device and return as hash Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH qemu-server v7 5/9] check_local_resources: allow mapped devices for offline migration Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH qemu-server v7 6/9] api: enable live migration for marked mapped pci devices Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH qemu-server v7 7/9] api: include not mapped resources for running vms in migrate preconditions Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH qemu-server v7 8/9] migrate: show vfio state transferred too Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH qemu-server v7 9/9] migrate: add transfer summary Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH manager v7 1/4] mapping: pci: include mdev in config checks Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH manager v7 2/4] bulk migrate: improve precondition checks Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH manager v7 3/4] ui: adapt migration window to precondition api change Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH manager v7 4/4] fix #5175: ui: allow configuring and live migration of mapped pci resources Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH docs v7 1/2] qm: resource mapping: add description for `mdev` option Dominik Csapak
2025-03-11 13:20 ` [pve-devel] [PATCH docs v7 2/2] qm: resource mapping: document `live-migration-capable` setting Dominik Csapak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250311132055.2826686-1-d.csapak@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal