guestperf: Support deferred migration for multifd
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>
This commit is contained in:
parent
b451705e3b
commit
32a1bb21c6
@ -106,7 +106,8 @@ class Engine(object):
|
|||||||
info.get("dirty-limit-ring-full-time", 0),
|
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_qemu_time = []
|
||||||
src_vcpu_time = []
|
src_vcpu_time = []
|
||||||
src_pid = src.get_pid()
|
src_pid = src.get_pid()
|
||||||
@ -220,6 +221,8 @@ class Engine(object):
|
|||||||
resp = src.cmd("migrate-set-parameters",
|
resp = src.cmd("migrate-set-parameters",
|
||||||
vcpu_dirty_limit=scenario._vcpu_dirty_limit)
|
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)
|
resp = src.cmd("migrate", uri=connect_uri)
|
||||||
|
|
||||||
post_copy = False
|
post_copy = False
|
||||||
@ -373,11 +376,14 @@ class Engine(object):
|
|||||||
def _get_src_args(self, hardware):
|
def _get_src_args(self, hardware):
|
||||||
return self._get_common_args(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
|
tunnelled = False
|
||||||
if self._dst_host != "localhost":
|
if self._dst_host != "localhost":
|
||||||
tunnelled = True
|
tunnelled = True
|
||||||
argv = self._get_common_args(hardware, tunnelled)
|
argv = self._get_common_args(hardware, tunnelled)
|
||||||
|
|
||||||
|
if defer_migrate:
|
||||||
|
return argv + ["-incoming", "defer"]
|
||||||
return argv + ["-incoming", uri]
|
return argv + ["-incoming", uri]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -424,6 +430,7 @@ class Engine(object):
|
|||||||
|
|
||||||
def run(self, hardware, scenario, result_dir=os.getcwd()):
|
def run(self, hardware, scenario, result_dir=os.getcwd()):
|
||||||
abs_result_dir = os.path.join(result_dir, scenario._name)
|
abs_result_dir = os.path.join(result_dir, scenario._name)
|
||||||
|
defer_migrate = False
|
||||||
|
|
||||||
if self._transport == "tcp":
|
if self._transport == "tcp":
|
||||||
uri = "tcp:%s:9000" % self._dst_host
|
uri = "tcp:%s:9000" % self._dst_host
|
||||||
@ -439,6 +446,9 @@ class Engine(object):
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
if scenario._multifd:
|
||||||
|
defer_migrate = True
|
||||||
|
|
||||||
if self._dst_host != "localhost":
|
if self._dst_host != "localhost":
|
||||||
dstmonaddr = ("localhost", 9001)
|
dstmonaddr = ("localhost", 9001)
|
||||||
else:
|
else:
|
||||||
@ -452,7 +462,7 @@ class Engine(object):
|
|||||||
monitor_address=srcmonaddr)
|
monitor_address=srcmonaddr)
|
||||||
|
|
||||||
dst = QEMUMachine(self._binary,
|
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),
|
wrapper=self._get_dst_wrapper(hardware),
|
||||||
name="qemu-dst-%d" % os.getpid(),
|
name="qemu-dst-%d" % os.getpid(),
|
||||||
monitor_address=dstmonaddr)
|
monitor_address=dstmonaddr)
|
||||||
@ -461,7 +471,8 @@ class Engine(object):
|
|||||||
src.launch()
|
src.launch()
|
||||||
dst.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]
|
progress_history = ret[0]
|
||||||
qemu_timings = ret[1]
|
qemu_timings = ret[1]
|
||||||
vcpu_timings = ret[2]
|
vcpu_timings = ret[2]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user