[RFC PATCH 0/6] migration: Multi-thread compression with zstd method

Zeyu Jin posted 6 patches 3 years, 5 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20201109090850.2424-1-jinzeyu@huawei.com
Maintainers: Juan Quintela <quintela@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Markus Armbruster <armbru@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Eduardo Habkost <ehabkost@redhat.com>, Eric Blake <eblake@redhat.com>
docs/multi-thread-compression.txt |  31 ++-
hw/core/qdev-properties-system.c  |  11 +
include/hw/qdev-properties.h      |   4 +
migration/migration.c             |  56 ++++-
migration/migration.h             |   1 +
migration/qemu-file.c             |  62 +----
migration/qemu-file.h             |   4 +-
migration/ram.c                   | 381 +++++++++++++++++++++++++-----
monitor/hmp-cmds.c                |  12 +
qapi/migration.json               |  26 +-
10 files changed, 465 insertions(+), 123 deletions(-)
[RFC PATCH 0/6] migration: Multi-thread compression with zstd method
Posted by Zeyu Jin 3 years, 5 months ago
Currently we have both multi-thread compression and multifd to optimize
live migration in Qemu. Mulit-thread compression deals with the situation
where network bandwith is limited but cpu resource adequate. Multifd instead
aims to take full advantage of network bandwith. Moreover it supports both
zlib and zstd compression on each channel.

In this patch series, we did some code refactoring on multi-thread compression
live migration and bring zstd compression method support for it.

Below is the test result of multi-thread compression live migration
with different compress methods. Test result shows that zstd outperforms
zlib by about 70%.

 Migration Configuration:
 Guest 8U 32G
 compress-threads   8
 decompress-threads 2
 compress-level 1
 bandwidth-limit 100Mbps

 Test Result:
 +---------------------+--------------+-------------+
 |  compress method    |   zlib       |    zstd     |
 +---------------------+--------------+-------------+
 |  total time (ms)    |   75256      |    44187    |
 +---------------------+--------------+-------------+
 |  downtime(ms)       |   128        |    81       |
 +---------------------+--------------+-------------+
 |  transferred ram(kB)|   1576866    |    736117   |
 +---------------------+--------------+-------------+
 |  throughput(mbps)   |   172.06     |    137.16   |
 +---------------------+--------------+-------------+
 |  total ram(kB)      |   33685952   |    33685952 |
 +---------------------+--------------+-------------+

Zeyu Jin (6):
  migration: Add multi-thread compress method
  migration: Refactoring multi-thread compress migration
  migration: Add multi-thread compress ops
  migration: Add zstd support in multi-thread compression
  migration: Add compress_level sanity check
  doc: Update multi-thread compression doc

 docs/multi-thread-compression.txt |  31 ++-
 hw/core/qdev-properties-system.c  |  11 +
 include/hw/qdev-properties.h      |   4 +
 migration/migration.c             |  56 ++++-
 migration/migration.h             |   1 +
 migration/qemu-file.c             |  62 +----
 migration/qemu-file.h             |   4 +-
 migration/ram.c                   | 381 +++++++++++++++++++++++++-----
 monitor/hmp-cmds.c                |  12 +
 qapi/migration.json               |  26 +-
 10 files changed, 465 insertions(+), 123 deletions(-)

-- 
2.23.0


Re: [RFC PATCH 0/6] migration: Multi-thread compression with zstd method
Posted by Zeyu Jin 3 years, 5 months ago
On 2020/11/9 17:08, Zeyu Jin wrote:
> Currently we have both multi-thread compression and multifd to optimize
> live migration in Qemu. Mulit-thread compression deals with the situation
> where network bandwith is limited but cpu resource adequate. Multifd instead
> aims to take full advantage of network bandwith. Moreover it supports both
> zlib and zstd compression on each channel.
> 
> In this patch series, we did some code refactoring on multi-thread compression
> live migration and bring zstd compression method support for it.
> 
> Below is the test result of multi-thread compression live migration
> with different compress methods. Test result shows that zstd outperforms
> zlib by about 70%.
> 
>  Migration Configuration:
>  Guest 8U 32G
>  compress-threads   8
>  decompress-threads 2
>  compress-level 1
>  bandwidth-limit 100Mbps
> 
>  Test Result:
>  +---------------------+--------------+-------------+
>  |  compress method    |   zlib       |    zstd     |
>  +---------------------+--------------+-------------+
>  |  total time (ms)    |   75256      |    44187    |
>  +---------------------+--------------+-------------+
>  |  downtime(ms)       |   128        |    81       |
>  +---------------------+--------------+-------------+
>  |  transferred ram(kB)|   1576866    |    736117   |
>  +---------------------+--------------+-------------+
>  |  throughput(mbps)   |   172.06     |    137.16   |
>  +---------------------+--------------+-------------+
>  |  total ram(kB)      |   33685952   |    33685952 |
>  +---------------------+--------------+-------------+
> 
> Zeyu Jin (6):
>   migration: Add multi-thread compress method
>   migration: Refactoring multi-thread compress migration
>   migration: Add multi-thread compress ops
>   migration: Add zstd support in multi-thread compression
>   migration: Add compress_level sanity check
>   doc: Update multi-thread compression doc
> 
>  docs/multi-thread-compression.txt |  31 ++-
>  hw/core/qdev-properties-system.c  |  11 +
>  include/hw/qdev-properties.h      |   4 +
>  migration/migration.c             |  56 ++++-
>  migration/migration.h             |   1 +
>  migration/qemu-file.c             |  62 +----
>  migration/qemu-file.h             |   4 +-
>  migration/ram.c                   | 381 +++++++++++++++++++++++++-----
>  monitor/hmp-cmds.c                |  12 +
>  qapi/migration.json               |  26 +-
>  10 files changed, 465 insertions(+), 123 deletions(-)
> 

Ping