Leonardo Bras <[email protected]> writes:
> Add property that allows zero-copy migration of memory pages
> on the sending side, and also includes a helper function
> migrate_use_zero_copy_send() to check if it's enabled.
>
> No code is introduced to actually do the migration, but it allow
> future implementations to enable/disable this feature.
>
> On non-Linux builds this parameter is compiled-out.
>
> Signed-off-by: Leonardo Bras <[email protected]>
> Reviewed-by: Peter Xu <[email protected]>
> Reviewed-by: Daniel P. Berrangé <[email protected]>
> Reviewed-by: Juan Quintela <[email protected]>
> Acked-by: Markus Armbruster <[email protected]>
> ---
> qapi/migration.json | 24 ++++++++++++++++++++++++
> migration/migration.h | 5 +++++
> migration/migration.c | 32 ++++++++++++++++++++++++++++++++
> migration/socket.c | 11 +++++++++--
> monitor/hmp-cmds.c | 6 ++++++
> 5 files changed, 76 insertions(+), 2 deletions(-)
>
> diff --git a/qapi/migration.json b/qapi/migration.json
> index 409eb086a2..04246481ce 100644
> --- a/qapi/migration.json
> +++ b/qapi/migration.json
> @@ -741,6 +741,13 @@
> # will consume more CPU.
> # Defaults to 1. (Since 5.0)
> #
> +# @zero-copy-send: Controls behavior on sending memory pages on migration.
> +# When true, enables a zero-copy mechanism for sending
> memory
> +# pages, if host supports it.
> +# Requires that QEMU be permitted to use locked memory for
> guest
Please wrap lines around column 75. More of the same below.
> +# RAM pages.
> +# Defaults to false. (Since 7.1)
> +#
> # @block-bitmap-mapping: Maps block nodes and bitmaps on them to
> # aliases for the purpose of dirty bitmap migration.
> Such
> # aliases may for example be the corresponding names
> on the
> @@ -780,6 +787,7 @@
> 'xbzrle-cache-size', 'max-postcopy-bandwidth',
> 'max-cpu-throttle', 'multifd-compression',
> 'multifd-zlib-level' ,'multifd-zstd-level',
> + { 'name': 'zero-copy-send', 'if' : 'CONFIG_LINUX'},
> 'block-bitmap-mapping' ] }
>
> ##
> @@ -906,6 +914,13 @@
> # will consume more CPU.
> # Defaults to 1. (Since 5.0)
> #
> +# @zero-copy-send: Controls behavior on sending memory pages on migration.
> +# When true, enables a zero-copy mechanism for sending
> memory
> +# pages, if host supports it.
> +# Requires that QEMU be permitted to use locked memory for
> guest
> +# RAM pages.
> +# Defaults to false. (Since 7.1)
> +#
> # @block-bitmap-mapping: Maps block nodes and bitmaps on them to
> # aliases for the purpose of dirty bitmap migration.
> Such
> # aliases may for example be the corresponding names
> on the
> @@ -960,6 +975,7 @@
> '*multifd-compression': 'MultiFDCompression',
> '*multifd-zlib-level': 'uint8',
> '*multifd-zstd-level': 'uint8',
> + '*zero-copy-send': { 'type': 'bool', 'if': 'CONFIG_LINUX' },
> '*block-bitmap-mapping': [ 'BitmapMigrationNodeAlias' ] } }
>
> ##
> @@ -1106,6 +1122,13 @@
> # will consume more CPU.
> # Defaults to 1. (Since 5.0)
> #
> +# @zero-copy-send: Controls behavior on sending memory pages on migration.
> +# When true, enables a zero-copy mechanism for sending
> memory
> +# pages, if host supports it.
> +# Requires that QEMU be permitted to use locked memory for
> guest
> +# RAM pages.
> +# Defaults to false. (Since 7.1)
> +#
> # @block-bitmap-mapping: Maps block nodes and bitmaps on them to
> # aliases for the purpose of dirty bitmap migration.
> Such
> # aliases may for example be the corresponding names
> on the
> @@ -1158,6 +1181,7 @@
> '*multifd-compression': 'MultiFDCompression',
> '*multifd-zlib-level': 'uint8',
> '*multifd-zstd-level': 'uint8',
> + '*zero-copy-send': { 'type': 'bool', 'if': 'CONFIG_LINUX' },
> '*block-bitmap-mapping': [ 'BitmapMigrationNodeAlias' ] } }
>
> ##
[...]