[libvirt] [PATCH v2 3/3] virsh: Add options for parallel migration
John Ferlan
jferlan at redhat.com
Wed Feb 13 20:05:44 UTC 2019
On 2/8/19 10:08 AM, Jiri Denemark wrote:
> Signed-off-by: Jiri Denemark <jdenemar at 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 at 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.
>
>
More information about the libvir-list
mailing list