On 2/8/19 10:08 AM, Jiri Denemark wrote:
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
tools/virsh-domain.c | 19 +++++++++++++++++++
tools/virsh.pod | 7 +++++++
2 files changed, 26 insertions(+)
Should supplying parallel-connections imply parallel since the previous
patch would fail:
+ if (migParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].set &&
+ !(flags & VIR_MIGRATE_PARALLEL)) {
+ virReportError(VIR_ERR_INVALID_ARG, "%s",
+ _("Turn parallel migration on to tune it"));
+ goto error;
+ }
+
either that or make parallel-connections be an optional parameter to
--parallel using VSH_OFLAG_EMPTY_OK and converting the optionally read
string into an int.
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 8b20059335..c704faf7e1 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -10561,6 +10561,14 @@ static const vshCmdOptDef opts_migrate[] = {
.type = VSH_OT_INT,
.help = N_("post-copy migration bandwidth limit in MiB/s")
},
+ {.name = "parallel",
+ .type = VSH_OT_BOOL,
+ .help = N_("enable parallel migration")
+ },
+ {.name = "parallel-connections",
+ .type = VSH_OT_INT,
+ .help = N_("number of connections for parallel migration")
+ },
{.name = NULL}
};
@@ -10766,6 +10774,14 @@ doMigrate(void *opaque)
goto save_error;
}
+ if (vshCommandOptInt(ctl, cmd, "parallel-connections", &intOpt) <
0)
+ goto out;
+ if (intOpt &&
+ virTypedParamsAddInt(¶ms, &nparams, &maxparams,
+ VIR_MIGRATE_PARAM_PARALLEL_CONNECTIONS,
+ intOpt) < 0)
+ goto save_error;
+
if (vshCommandOptBool(cmd, "live"))
flags |= VIR_MIGRATE_LIVE;
if (vshCommandOptBool(cmd, "p2p"))
@@ -10814,6 +10830,9 @@ doMigrate(void *opaque)
if (vshCommandOptBool(cmd, "tls"))
flags |= VIR_MIGRATE_TLS;
+ if (vshCommandOptBool(cmd, "parallel"))
+ flags |= VIR_MIGRATE_PARALLEL;
+
if (flags & VIR_MIGRATE_PEER2PEER || vshCommandOptBool(cmd, "direct"))
{
if (virDomainMigrateToURI3(dom, desturi, params, nparams, flags) == 0)
ret = '0';
diff --git a/tools/virsh.pod b/tools/virsh.pod
index 67edb57b14..7604c7536e 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -1904,6 +1904,7 @@ I<domain> I<desturi> [I<migrateuri>]
[I<graphicsuri>] [I<listen-address>] [I<dna
[I<--comp-xbzrle-cache>] [I<--auto-converge>]
[I<auto-converge-initial>]
[I<auto-converge-increment>] [I<--persistent-xml> B<file>]
[I<--tls>]
[I<--postcopy-bandwidth> B<bandwidth>]
+[I<--parallel> [I<parallel-connections> B<connections>]]
--parallel-connections
Migrate domain to another host. Add I<--live> for live migration; <--p2p>
for peer-2-peer migration; I<--direct> for direct migration; or
I<--tunnelled>
@@ -1997,6 +1998,12 @@ Providing I<--tls> causes the migration to use the host
configured TLS setup
the migration of the domain. Usage requires proper TLS setup for both source
and target.
+I<--parallel> option will cause migration data to be sent over multiple
+parallel connections. The number of such connections can be set using
+I<parallel-connections>. Parallel connections may help with saturating the
--parallel-connections
+network link between the source and the target and thus speeding up
the
+migration.
+
[although too many could really be a problem ;-)]
What's here is fine.... If you want to alter to have one option with an
optional parameter, then just repost this patch.
Reviewed-by: John Ferlan <jferlan(a)redhat.com>
John
Running migration can be canceled by interrupting virsh (usually
using
C<Ctrl-C>) or by B<domjobabort> command sent from another virsh instance.