[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 01/17] migration: add background snapshot cap
From: |
Peter Xu |
Subject: |
Re: [Qemu-devel] [PATCH v1 01/17] migration: add background snapshot capability |
Date: |
Fri, 20 Jul 2018 13:14:48 +0800 |
User-agent: |
Mutt/1.10.0 (2018-05-17) |
On Wed, Jul 18, 2018 at 06:41:44PM +0300, Denis Plotnikov wrote:
> The capability is used for the background vmstate saving
> using the migration infrastructure.
> Background vmstate saving means that the majority of vmstate
> (RAM) is saved in the background when VM's vCPUS are running.
> This helps to reduce the VM downtime on VM snapshotting.
>
> Signed-off-by: Denis Plotnikov <address@hidden>
> ---
> migration/migration.c | 35 +++++++++++++++++++++++++++++++++++
> migration/migration.h | 1 +
> qapi/migration.json | 6 +++++-
> 3 files changed, 41 insertions(+), 1 deletion(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index d780601f0c..87096d23ef 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -697,6 +697,12 @@ static bool migrate_caps_check(bool *cap_list,
> return false;
> }
>
> + if (cap_list[MIGRATION_CAPABILITY_BACKGROUND_SNAPSHOT]) {
> + error_setg(errp, "Postcopy is not compatible "
> + "with background snapshot");
> + return false;
> + }
> +
> /* This check is reasonably expensive, so only when it's being
> * set the first time, also it's only the destination that needs
> * special support.
> @@ -711,6 +717,26 @@ static bool migrate_caps_check(bool *cap_list,
> }
> }
>
> + if (cap_list[MIGRATION_CAPABILITY_BACKGROUND_SNAPSHOT]) {
> + if (cap_list[MIGRATION_CAPABILITY_RELEASE_RAM]) {
> + error_setg(errp, "Background snapshot is not compatible "
> + "with release ram capability");
> + return false;
> + }
> +
> + if (cap_list[MIGRATION_CAPABILITY_COMPRESS]) {
> + error_setg(errp, "Background snapshot is not "
> + "currently compatible with compression");
> + return false;
> + }
> +
> + if (cap_list[MIGRATION_CAPABILITY_XBZRLE]) {
> + error_setg(errp, "Background snapshot is not "
> + "currently compatible with XBZLRE");
> + return false;
> + }
> + }
> +
> return true;
> }
>
> @@ -1635,6 +1661,15 @@ bool migrate_use_block_incremental(void)
> return s->parameters.block_incremental;
> }
>
> +bool migrate_background_snapshot(void)
> +{
> + MigrationState *s;
> +
> + s = migrate_get_current();
> +
> + return s->enabled_capabilities[MIGRATION_CAPABILITY_BACKGROUND_SNAPSHOT];
> +}
> +
> /* migration thread support */
> /*
> * Something bad happened to the RP stream, mark an error
> diff --git a/migration/migration.h b/migration/migration.h
> index 663415fe48..21babbc008 100644
> --- a/migration/migration.h
> +++ b/migration/migration.h
> @@ -201,6 +201,7 @@ int migrate_compress_level(void);
> int migrate_compress_threads(void);
> int migrate_decompress_threads(void);
> bool migrate_use_events(void);
> +bool migrate_background_snapshot(void);
>
> /* Sending on the return path - generic and then for each message type */
> void migrate_send_rp_shut(MigrationIncomingState *mis,
> diff --git a/qapi/migration.json b/qapi/migration.json
> index 03f57c9616..eb5f52b7ff 100644
> --- a/qapi/migration.json
> +++ b/qapi/migration.json
> @@ -352,12 +352,16 @@
> #
> # @x-multifd: Use more than one fd for migration (since 2.11)
> #
> +# @background-snapshot: Using migration infrastructure makes VM snapshot
> +# saving its RAM in background. This reduces VM downtime. (since
> 2.12)
> +#
Please specify "(since 3.1)" in your next post.
The sentence is not that clear to me. For example, "saving its RAM in
background" is done in every migration, not only for the live
snapshot. The words "reduces VM downtime" sounds also like for a live
migration rather than snapshots. My try:
If enabled, the migration stream will be a snapshot of the VM
exactly at the point when the migration procedure starts.
> # Since: 1.2
> ##
> { 'enum': 'MigrationCapability',
> 'data': ['xbzrle', 'rdma-pin-all', 'auto-converge', 'zero-blocks',
> 'compress', 'events', 'postcopy-ram', 'x-colo', 'release-ram',
> - 'block', 'return-path', 'pause-before-switchover', 'x-multifd' ] }
> + 'block', 'return-path', 'pause-before-switchover', 'x-multifd',
> + 'background-snapshot' ] }
>
> ##
> # @MigrationCapabilityStatus:
> --
> 2.17.0
>
>
Regards,
--
Peter Xu
- [Qemu-devel] [PATCH v1 00/17] Background snapshots, Denis Plotnikov, 2018/07/18
- [Qemu-devel] [PATCH v1 05/17] ram: extend the data structures for background snapshotting, Denis Plotnikov, 2018/07/18
- [Qemu-devel] [PATCH v1 01/17] migration: add background snapshot capability, Denis Plotnikov, 2018/07/18
- Re: [Qemu-devel] [PATCH v1 01/17] migration: add background snapshot capability,
Peter Xu <=
- [Qemu-devel] [PATCH v1 13/17] background snapshot: add write-protected page access handler function, Denis Plotnikov, 2018/07/18
- [Qemu-devel] [PATCH v1 06/17] background snapshot: add helpers to manage a copy of ram block list, Denis Plotnikov, 2018/07/18
- [Qemu-devel] [PATCH v1 08/17] migration: add helpers to change VM memory protection rights, Denis Plotnikov, 2018/07/18
- [Qemu-devel] [PATCH v1 02/17] bitops: add some atomic versions of bitmap operations, Denis Plotnikov, 2018/07/18
- [Qemu-devel] [PATCH v1 10/17] background snapshots: adapt the page queueing code for using page copies, Denis Plotnikov, 2018/07/18