[RFC 6/6] migration: Deprecated old compression method

Thomas Huth thuth at redhat.com
Wed Jun 21 07:14:27 UTC 2023


On 12/06/2023 21.33, Juan Quintela wrote:
> Signed-off-by: Juan Quintela <quintela at redhat.com>
> ---
>   docs/about/deprecated.rst |  8 ++++
>   qapi/migration.json       | 92 ++++++++++++++++++++++++---------------
>   migration/options.c       | 13 ++++++
>   3 files changed, 79 insertions(+), 34 deletions(-)
> 
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index 173c5ba5cb..fe7f2bbde8 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -460,3 +460,11 @@ block migration (since 8.1)
>   Block migration is too inflexible.  It needs to migrate all block
>   devices or none.  Use driver_mirror+NBD instead.
>   
> +old compression method (since 8.1)
> +''''''''''''''''''''''''''''''''''
> +
> +Compression method fails too much.  Too many races.  We are going to
> +remove it if nobody fixes it.  For starters, migration-test
> +compression tests are disabled becase they hand randomly.  If you need

"because they fail randomly" ?

> +compression, use multifd compression methods.
> +
> diff --git a/qapi/migration.json b/qapi/migration.json
> index a8497de48d..40a8b5d124 100644
> --- a/qapi/migration.json
> +++ b/qapi/migration.json
> @@ -244,6 +244,7 @@
>   #
>   # @compression: migration compression statistics, only returned if
>   #     compression feature is on and status is 'active' or 'completed'
> +#     It is obsolete and deprecated.  Use multifd compression methods.
>   #     (Since 3.1)
>   #
>   # @socket-address: Only used for tcp, to know what the real port is
> @@ -261,7 +262,8 @@
>   # Features:
>   #
>   # @deprecated: @disk migration is deprecated.  Use driver_mirror+NBD
> -#     instead.
> +#     instead. @compression is obsolete use multifd compression

Use a dot or comma after "obsolete".

> +#     methods instead.
>   #
>   # Since: 0.14
>   ##
> @@ -279,7 +281,7 @@
>              '*blocked-reasons': ['str'],
>              '*postcopy-blocktime': 'uint32',
>              '*postcopy-vcpu-blocktime': ['uint32'],
> -           '*compression': 'CompressionStats',
> +           '*compression': { 'type': 'CompressionStats', 'features': ['deprecated'] },
>              '*socket-address': ['SocketAddress'] } }
>   
>   ##
> @@ -432,7 +434,8 @@
>   #     compress and xbzrle are both on, compress only takes effect in
>   #     the ram bulk stage, after that, it will be disabled and only
>   #     xbzrle takes effect, this can help to minimize migration
> -#     traffic.  The feature is disabled by default.  (since 2.4 )
> +#     traffic.  The feature is disabled by default.  Obsolete.  Use
> +#     multifd compression methods if needed. (since 2.4 )
>   #
>   # @events: generate events for each migration state change (since 2.4
>   #     )
> @@ -503,6 +506,7 @@
>   # Features:
>   #
>   # @deprecated: @block migration is deprecated.  Use driver_mirror+NBD
> +#     instead. @compress is obsolete use multifd compression methods

dito

>   #     instead.
>   #
>   # @unstable: Members @x-colo and @x-ignore-shared are experimental.
> @@ -511,7 +515,8 @@
>   ##
>   { 'enum': 'MigrationCapability',
>     'data': ['xbzrle', 'rdma-pin-all', 'auto-converge', 'zero-blocks',
> -           'compress', 'events', 'postcopy-ram',
> +           { 'name': 'compress', 'features': [ 'deprecated' ] },
> +           'events', 'postcopy-ram',
>              { 'name': 'x-colo', 'features': [ 'unstable' ] },
>              'release-ram',
>              { 'name': 'block', 'features': [ 'deprecated' ] },
> @@ -671,22 +676,24 @@
>   #     migration, the compression level is an integer between 0 and 9,
>   #     where 0 means no compression, 1 means the best compression
>   #     speed, and 9 means best compression ratio which will consume
> -#     more CPU.
> +#     more CPU. Obsolete, see multifd compression if needed.
>   #
>   # @compress-threads: Set compression thread count to be used in live
>   #     migration, the compression thread count is an integer between 1
> -#     and 255.
> +#     and 255. Obsolete, see multifd compression if needed.
>   #
>   # @compress-wait-thread: Controls behavior when all compression
>   #     threads are currently busy.  If true (default), wait for a free
>   #     compression thread to become available; otherwise, send the page
> -#     uncompressed.  (Since 3.1)
> +#     uncompressed. Obsolete, see multifd compression if
> +#     needed. (Since 3.1)
>   #
>   # @decompress-threads: Set decompression thread count to be used in
>   #     live migration, the decompression thread count is an integer
>   #     between 1 and 255. Usually, decompression is at least 4 times as
>   #     fast as compression, so set the decompress-threads to the number
> -#     about 1/4 of compress-threads is adequate.
> +#     about 1/4 of compress-threads is adequate. Obsolete, see multifd
> +#     compression if needed.
>   #
>   # @throttle-trigger-threshold: The ratio of bytes_dirty_period and
>   #     bytes_xfer_period to trigger throttling.  It is expressed as
> @@ -799,7 +806,9 @@
>   # Features:
>   #
>   # @deprecated: Member @block-incremental is obsolete. Use
> -#     driver_mirror+NBD instead.
> +#     driver_mirror+NBD instead. Compression is obsolete, so members
> +#     @compress-level, @compress-threads, @decompress-threads and
> +#     @compress-wait-thread should not be used.
>   #
>   # @unstable: Member @x-checkpoint-delay is experimental.
>   #
> @@ -808,8 +817,11 @@
>   { 'enum': 'MigrationParameter',
>     'data': ['announce-initial', 'announce-max',
>              'announce-rounds', 'announce-step',
> -           'compress-level', 'compress-threads', 'decompress-threads',
> -           'compress-wait-thread', 'throttle-trigger-threshold',
> +           { 'name': 'compress-level', 'features': [ 'deprecated' ] },
> +           { 'name': 'compress-threads', 'features': [ 'deprecated' ] },
> +           { 'name': 'decompress-threads', 'features': [ 'deprecated' ] },
> +           { 'name': 'compress-wait-thread', 'features': [ 'deprecated' ] },
> +           'throttle-trigger-threshold',
>              'cpu-throttle-initial', 'cpu-throttle-increment',
>              'cpu-throttle-tailslow',
>              'tls-creds', 'tls-hostname', 'tls-authz', 'max-bandwidth',
> @@ -837,16 +849,17 @@
>   # @announce-step: Increase in delay (in milliseconds) between
>   #     subsequent packets in the announcement (Since 4.0)
>   #
> -# @compress-level: compression level
> +# @compress-level: compression level. Obsolete and deprecated.
>   #
> -# @compress-threads: compression thread count
> +# @compress-threads: compression thread count. Obsolete and deprecated.
>   #
>   # @compress-wait-thread: Controls behavior when all compression
>   #     threads are currently busy.  If true (default), wait for a free
>   #     compression thread to become available; otherwise, send the page
> -#     uncompressed.  (Since 3.1)
> +#     uncompressed.  Obsolete and deprecated. (Since 3.1)
>   #
> -# @decompress-threads: decompression thread count
> +# @decompress-threads: decompression thread count. Obsolete and
> +#     deprecated.
>   #
>   # @throttle-trigger-threshold: The ratio of bytes_dirty_period and
>   #     bytes_xfer_period to trigger throttling.  It is expressed as
> @@ -958,7 +971,9 @@
>   # Features:
>   #
>   # @deprecated: Member @block-incremental is obsolete. Use
> -#     driver_mirror+NBD instead.
> +#     driver_mirror+NBD instead. Compression is obsolete, so members
> +#     @compress-level, @compress-threads, @decompress-threads and
> +#     @compress-wait-thread should not be used.
>   #
>   # @unstable: Member @x-checkpoint-delay is experimental.
>   #
> @@ -972,10 +987,14 @@
>               '*announce-max': 'size',
>               '*announce-rounds': 'size',
>               '*announce-step': 'size',
> -            '*compress-level': 'uint8',
> -            '*compress-threads': 'uint8',
> -            '*compress-wait-thread': 'bool',
> -            '*decompress-threads': 'uint8',
> +            '*compress-level': { 'type': 'uint8',
> +                                 'features': [ 'deprecated' ] },
> +            '*compress-threads':  { 'type': 'uint8',
> +                                    'features': [ 'deprecated' ] },
> +            '*compress-wait-thread':  { 'type': 'bool',
> +                                        'features': [ 'deprecated' ] },
> +            '*decompress-threads':  { 'type': 'uint8',
> +                                      'features': [ 'deprecated' ] },
>               '*throttle-trigger-threshold': 'uint8',
>               '*cpu-throttle-initial': 'uint8',
>               '*cpu-throttle-increment': 'uint8',
> @@ -1008,7 +1027,7 @@
>   # Example:
>   #
>   # -> { "execute": "migrate-set-parameters" ,
> -#      "arguments": { "compress-level": 1 } }
> +#      "arguments": { "multifd-channels": 5 } }
>   # <- { "return": {} }
>   ##
>   { 'command': 'migrate-set-parameters', 'boxed': true,
> @@ -1031,16 +1050,18 @@
>   # @announce-step: Increase in delay (in milliseconds) between
>   #     subsequent packets in the announcement (Since 4.0)
>   #
> -# @compress-level: compression level
> +# @compress-level: compression level. Obsolete and deprecated.
>   #
> -# @compress-threads: compression thread count
> +# @compress-threads: compression thread count. Obsolote and

Obsolete

> +#     deprecated.
>   #
>   # @compress-wait-thread: Controls behavior when all compression
>   #     threads are currently busy.  If true (default), wait for a free
>   #     compression thread to become available; otherwise, send the page
> -#     uncompressed.  (Since 3.1)
> +#     uncompressed. Obsolete and deprecated. (Since 3.1)
>   #
> -# @decompress-threads: decompression thread count
> +# @decompress-threads: decompression thread count. Obsolete and
> +#     deprecated.
>   #
>   # @throttle-trigger-threshold: The ratio of bytes_dirty_period and
>   #     bytes_xfer_period to trigger throttling.  It is expressed as
> @@ -1154,7 +1175,9 @@
>   # Features:
>   #
>   # @deprecated: Member @block-incremental is obsolete. Use
> -#     driver_mirror+NBD instead.
> +#     driver_mirror+NBD instead. Compression is obsolete, so members
> +#     @compress-level, @compress-threads, @decompress-threads and
> +#     @compress-wait-thread should not be used.
>   #
>   # @unstable: Member @x-checkpoint-delay is experimental.
>   #
> @@ -1165,10 +1188,14 @@
>               '*announce-max': 'size',
>               '*announce-rounds': 'size',
>               '*announce-step': 'size',
> -            '*compress-level': 'uint8',
> -            '*compress-threads': 'uint8',
> -            '*compress-wait-thread': 'bool',
> -            '*decompress-threads': 'uint8',
> +            '*compress-level': { 'type': 'uint8',
> +                                 'features': [ 'deprecated' ] },
> +            '*compress-threads': { 'type': 'uint8',
> +                                   'features': [ 'deprecated' ] },
> +            '*compress-wait-thread': { 'type': 'bool',
> +                                       'features': [ 'deprecated' ] },
> +            '*decompress-threads': { 'type': 'uint8',
> +                                     'features': [ 'deprecated' ] },
>               '*throttle-trigger-threshold': 'uint8',
>               '*cpu-throttle-initial': 'uint8',
>               '*cpu-throttle-increment': 'uint8',
> @@ -1182,7 +1209,6 @@
>                                        'features': [ 'unstable' ] },
>               '*block-incremental': { 'type': 'bool',
>                                       'features': [ 'deprecated' ] },
> -            '*block-incremental': 'bool',

That hunk should go into a previous patch, I think.

>               '*multifd-channels': 'uint8',
>               '*xbzrle-cache-size': 'size',
>               '*max-postcopy-bandwidth': 'size',
> @@ -1205,10 +1231,8 @@
>   #
>   # -> { "execute": "query-migrate-parameters" }
>   # <- { "return": {
> -#          "decompress-threads": 2,
> +#          "multifd-channels": 2,
>   #          "cpu-throttle-increment": 10,
> -#          "compress-threads": 8,
> -#          "compress-level": 1,
>   #          "cpu-throttle-initial": 20,
>   #          "max-bandwidth": 33554432,
>   #          "downtime-limit": 300

  Thomas




More information about the libvir-list mailing list