[libvirt] [PATCH] qemu: make 'xz' image compression viable by using -3

Michal Privoznik mprivozn at redhat.com
Thu Nov 28 14:35:27 UTC 2019


On 11/28/19 1:27 PM, Daniel P. Berrangé wrote:
> For managed save we can choose between various compression
> methods. I randomly tested the 'xz' program on a 8 GB guest
> and was surprised to have to wait > 50 minutes for it to
> finish compressing, with 'xz' burning 100% cpu for the
> entire time. Despite the impressive compression, this is
> completely useless in the real world as it is far too long
> to wait to save the VM.
> 
> The 'xz' binary defaults to '-6' optimization level which
> aims for high compression, with moderate memory usage,
> at the expense of speed.
> 
> This change switches it to use the '-3' optimization level
> which is documented as being the one that optimizes speed
> at expense of compression. Even with this, it will still
> outperform all the other options in terms of compression
> level. It is a little less than x4 faster than '-6' which
> means it starts to be a viable choice to use 'xz' for
> people who really want best compression.
> 
> The test results on a 1 GB, fairly freshly booted VM are
> as follows
> 
>    format | save  | restore  size
>    =======+=======+=============
>    raw    |   05s |    1s  | 428 MB
>    lzop   |   05s |    3s  | 160 MB
>    gzip   |   29s |    5s  | 118 MB
>    bz2    |   54s |   22s  | 114 MB
>    xz     | 4m37s |   13s  |  86 MB
>    xz -3  | 1m20s |   12s  |  95 MB

I've got similar numbers.

> 
> Based on this we can say
> 
>   * For moderate compression with no noticable loss in speed
> 
>         => use lzop
> 
>   * For high compression with moderate loss in speed
> 
>         => use gzip
> 
>   * For best compression with significant loss in speed
> 
>         => use xz
> 
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
>   src/qemu/qemu_driver.c    | 46 ++++++++++++++++++++++-----------------
>   src/qemu/qemu_migration.c | 28 ++++++++----------------
>   src/qemu/qemu_migration.h |  2 +-
>   3 files changed, 36 insertions(+), 40 deletions(-)

Reviewed-by: Michal Privoznik <mprivozn at redhat.com>

Michal




More information about the libvir-list mailing list