[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 19/22] guestperf: Support deferred migration for multifd
From: |
Fabiano Rosas |
Subject: |
[PULL 19/22] guestperf: Support deferred migration for multifd |
Date: |
Fri, 14 Feb 2025 17:31:56 -0300 |
From: Hyman Huang <yong.huang@smartx.com>
The way to enable multifd migration has been changed by commit,
82137e6c8c (migration: enforce multifd and postcopy preempt to
be set before incoming), and guestperf has not made the
necessary changes. If multifd migration had been enabled in the
previous manner, the following error would have occurred:
Multifd must be set before incoming starts
Supporting deferred migration will fix it.
Signed-off-by: Hyman Huang <yong.huang@smartx.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID:
<8874e170f890ce0bc6f25cb0d9b9ae307ce2e070.1739530098.git.yong.huang@smartx.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
tests/migration-stress/guestperf/engine.py | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/tests/migration-stress/guestperf/engine.py
b/tests/migration-stress/guestperf/engine.py
index 608d7270f6..4b15322e8d 100644
--- a/tests/migration-stress/guestperf/engine.py
+++ b/tests/migration-stress/guestperf/engine.py
@@ -106,7 +106,8 @@ def _migrate_progress(self, vm):
info.get("dirty-limit-ring-full-time", 0),
)
- def _migrate(self, hardware, scenario, src, dst, connect_uri):
+ def _migrate(self, hardware, scenario, src,
+ dst, connect_uri, defer_migrate):
src_qemu_time = []
src_vcpu_time = []
src_pid = src.get_pid()
@@ -220,6 +221,8 @@ def _migrate(self, hardware, scenario, src, dst,
connect_uri):
resp = src.cmd("migrate-set-parameters",
vcpu_dirty_limit=scenario._vcpu_dirty_limit)
+ if defer_migrate:
+ resp = dst.cmd("migrate-incoming", uri=connect_uri)
resp = src.cmd("migrate", uri=connect_uri)
post_copy = False
@@ -373,11 +376,14 @@ def _get_common_args(self, hardware, tunnelled=False):
def _get_src_args(self, hardware):
return self._get_common_args(hardware)
- def _get_dst_args(self, hardware, uri):
+ def _get_dst_args(self, hardware, uri, defer_migrate):
tunnelled = False
if self._dst_host != "localhost":
tunnelled = True
argv = self._get_common_args(hardware, tunnelled)
+
+ if defer_migrate:
+ return argv + ["-incoming", "defer"]
return argv + ["-incoming", uri]
@staticmethod
@@ -424,6 +430,7 @@ def _get_timings(self, vm):
def run(self, hardware, scenario, result_dir=os.getcwd()):
abs_result_dir = os.path.join(result_dir, scenario._name)
+ defer_migrate = False
if self._transport == "tcp":
uri = "tcp:%s:9000" % self._dst_host
@@ -439,6 +446,9 @@ def run(self, hardware, scenario, result_dir=os.getcwd()):
except:
pass
+ if scenario._multifd:
+ defer_migrate = True
+
if self._dst_host != "localhost":
dstmonaddr = ("localhost", 9001)
else:
@@ -452,7 +462,7 @@ def run(self, hardware, scenario, result_dir=os.getcwd()):
monitor_address=srcmonaddr)
dst = QEMUMachine(self._binary,
- args=self._get_dst_args(hardware, uri),
+ args=self._get_dst_args(hardware, uri,
defer_migrate),
wrapper=self._get_dst_wrapper(hardware),
name="qemu-dst-%d" % os.getpid(),
monitor_address=dstmonaddr)
@@ -461,7 +471,8 @@ def run(self, hardware, scenario, result_dir=os.getcwd()):
src.launch()
dst.launch()
- ret = self._migrate(hardware, scenario, src, dst, uri)
+ ret = self._migrate(hardware, scenario, src,
+ dst, uri, defer_migrate)
progress_history = ret[0]
qemu_timings = ret[1]
vcpu_timings = ret[2]
--
2.35.3
- [PULL 08/22] migration: Check migration error after loadvm, (continued)
- [PULL 08/22] migration: Check migration error after loadvm, Fabiano Rosas, 2025/02/14
- [PULL 13/22] migration: Reject qmp_migrate_cancel after postcopy, Fabiano Rosas, 2025/02/14
- [PULL 04/22] io: Add flags argument to qio_channel_readv_full_all_eof, Fabiano Rosas, 2025/02/14
- [PULL 10/22] migration: Unify migration_cancel and migrate_fd_cancel, Fabiano Rosas, 2025/02/14
- [PULL 12/22] migration: Fix hang after error in destination setup phase, Fabiano Rosas, 2025/02/14
- [PULL 14/22] migration: Don't set FAILED state when cancelling, Fabiano Rosas, 2025/02/14
- [PULL 18/22] migration: use parameters.mode in cpr_state_save, Fabiano Rosas, 2025/02/14
- [PULL 17/22] migration: Update migrate_cancel documentation, Fabiano Rosas, 2025/02/14
- [PULL 20/22] guestperf: Nitpick the inconsistent parameters, Fabiano Rosas, 2025/02/14
- [PULL 21/22] guestperf: Introduce multifd compression option, Fabiano Rosas, 2025/02/14
- [PULL 19/22] guestperf: Support deferred migration for multifd,
Fabiano Rosas <=
- [PULL 02/22] io: tls: Add qio_channel_tls_bye, Fabiano Rosas, 2025/02/14
- [PULL 07/22] migration/multifd: Add a compat property for TLS termination, Fabiano Rosas, 2025/02/14
- [PULL 22/22] guestperf: Add test result data into report, Fabiano Rosas, 2025/02/14
- Re: [PULL 00/22] Migration patches for 2025-02-14, Stefan Hajnoczi, 2025/02/17