qemu-e2k/block
Denis Plotnikov d298ac10ad qcow2: add zstd cluster compression
zstd significantly reduces cluster compression time.
It provides better compression performance maintaining
the same level of the compression ratio in comparison with
zlib, which, at the moment, is the only compression
method available.

The performance test results:
Test compresses and decompresses qemu qcow2 image with just
installed rhel-7.6 guest.
Image cluster size: 64K. Image on disk size: 2.2G

The test was conducted with brd disk to reduce the influence
of disk subsystem to the test results.
The results is given in seconds.

compress cmd:
  time ./qemu-img convert -O qcow2 -c -o compression_type=[zlib|zstd]
                  src.img [zlib|zstd]_compressed.img
decompress cmd
  time ./qemu-img convert -O qcow2
                  [zlib|zstd]_compressed.img uncompressed.img

           compression               decompression
         zlib       zstd           zlib         zstd
------------------------------------------------------------
real     65.5       16.3 (-75 %)    1.9          1.6 (-16 %)
user     65.0       15.8            5.3          2.5
sys       3.3        0.2            2.0          2.0

Both ZLIB and ZSTD gave the same compression ratio: 1.57
compressed image size in both cases: 1.4G

Signed-off-by: Denis Plotnikov <dplotnikov@virtuozzo.com>
QAPI part:
Acked-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20200507082521.29210-4-dplotnikov@virtuozzo.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
2020-05-13 14:20:31 +02:00
..
monitor
accounting.c
aio_task.c
backup-top.c backup: Make sure that source and target size match 2020-05-08 13:26:35 +02:00
backup-top.h
backup.c backup: Make sure that source and target size match 2020-05-08 13:26:35 +02:00
blkdebug.c
blklogwrites.c
blkreplay.c
blkverify.c
block-backend.c block: Add blk_new_with_bs() helper 2020-05-05 13:17:36 +02:00
block-copy.c block/block-copy: use aio-task-pool API 2020-05-05 14:03:28 +02:00
bochs.c
cloop.c
commit.c
copy-on-read.c
create.c
crypto.c block: luks: better error message when creating too large files 2020-05-07 12:52:33 +01:00
crypto.h
curl.c
dirty-bitmap.c
dmg-bz2.c
dmg-lzfse.c
dmg.c
dmg.h
file-posix.c block: Drop unused .bdrv_has_zero_init_truncate 2020-05-08 13:26:35 +02:00
file-win32.c block: Drop unused .bdrv_has_zero_init_truncate 2020-05-08 13:26:35 +02:00
filter-compress.c
gluster.c gluster: Drop useless has_zero_init callback 2020-05-08 13:26:35 +02:00
io_uring.c
io.c block: Comment cleanups 2020-05-05 13:17:36 +02:00
iscsi-opts.c
iscsi.c lockable: replaced locks with lock guard macros where appropriate 2020-05-04 16:07:43 +01:00
linux-aio.c
Makefile.objs
mirror.c
nbd.c block/nbd-client: drop max_block restriction from discard 2020-05-04 15:16:46 -05:00
nfs.c block: Drop unused .bdrv_has_zero_init_truncate 2020-05-08 13:26:35 +02:00
null.c
nvme.c Compress lines for immediate return 2020-05-04 14:43:22 +02:00
parallels.c parallels: Rework truncation logic 2020-05-08 13:26:35 +02:00
parallels.h
qapi-sysemu.c
qapi.c
qcow2-bitmap.c
qcow2-cache.c
qcow2-cluster.c
qcow2-refcount.c block: Comment cleanups 2020-05-05 13:17:36 +02:00
qcow2-snapshot.c qcow2: Allow resize of images with internal snapshots 2020-05-05 13:17:36 +02:00
qcow2-threads.c qcow2: add zstd cluster compression 2020-05-13 14:20:31 +02:00
qcow2.c qcow2: add zstd cluster compression 2020-05-13 14:20:31 +02:00
qcow2.h qcow2: introduce compression type feature 2020-05-13 14:20:31 +02:00
qcow.c block: Add blk_new_with_bs() helper 2020-05-05 13:17:36 +02:00
qed-check.c
qed-cluster.c
qed-l2-cache.c
qed-table.c
qed.c block: Drop unused .bdrv_has_zero_init_truncate 2020-05-08 13:26:35 +02:00
qed.h
quorum.c
raw-format.c block: Drop unused .bdrv_has_zero_init_truncate 2020-05-08 13:26:35 +02:00
rbd.c block: Drop unused .bdrv_has_zero_init_truncate 2020-05-08 13:26:35 +02:00
replication.c
sheepdog.c block: Drop unused .bdrv_has_zero_init_truncate 2020-05-08 13:26:35 +02:00
snapshot.c
ssh.c block: Drop unused .bdrv_has_zero_init_truncate 2020-05-08 13:26:35 +02:00
stream.c
throttle-groups.c
throttle.c
trace-events
vdi.c block: Add blk_new_with_bs() helper 2020-05-05 13:17:36 +02:00
vhdx-endian.c
vhdx-log.c
vhdx.c vhdx: Rework truncation logic 2020-05-08 13:26:35 +02:00
vhdx.h
vmdk.c vmdk: Flush only once in vmdk_L2update() 2020-05-08 13:26:35 +02:00
vpc.c block: Add blk_new_with_bs() helper 2020-05-05 13:17:36 +02:00
vvfat.c block: Comment cleanups 2020-05-05 13:17:36 +02:00
vxhs.c
win32-aio.c
write-threshold.c