mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-06 06:27:41 -07:00
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
1 changed files with 15 additions and 4 deletions
|
|
@ -106,7 +106,8 @@ class Engine(object):
|
|||
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 @@ class Engine(object):
|
|||
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 @@ class Engine(object):
|
|||
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 @@ class Engine(object):
|
|||
|
||||
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 @@ class Engine(object):
|
|||
except:
|
||||
pass
|
||||
|
||||
if scenario._multifd:
|
||||
defer_migrate = True
|
||||
|
||||
if self._dst_host != "localhost":
|
||||
dstmonaddr = ("localhost", 9001)
|
||||
else:
|
||||
|
|
@ -452,7 +462,7 @@ class Engine(object):
|
|||
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 @@ class Engine(object):
|
|||
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]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue