Ping! On 19.08.2019 18:00, Denis Plotnikov wrote: > v3: > * relax the compression type setting requirement when > the compression type is not zlib [Eric, Kevin] > * add compression type values to the spec [Eric] > * fix wording in the spec and descriptions [Eric] > * fix functions descriptions [Max] > * fix zstd (de)compression functions flaws [Max] > * fix zstd related parts of configure file [Max] > * rebased to v4.1.0-rc5 and chenged the series version aiming to 4.2 > > v2: > * relax the compression type setting restriction in the spec > * fix qcow2 header size checking > * fix error processing and messaging > * fix qcow2 image specific info reporting > * set Qcow2CompressionType zstd config dependant > * add zstd compressed cluster format description to the spec > > v1: > * extend qcow2 header instead of adding a new incompatible extension header > specification re-written accordingly > * enable zstd compression via config > * fix zstd (de)compression functions > * fix comments/description > * fix function naming > > --- > The goal of the patch-set is to enable qcow2 to use zstd compression for > clusters. ZSTD provides better (de)compression performance than currently > used ZLIB. Using it will improve perforamnce (reduce compression time) > when the compressed clusters is used, e.g backup scenarios. > > Also, the patch-set extends qcow2 specification by adding compression_type > feature. The feature enables adding ZSTD and another compression algorithms > in the future. > > Here is some measurements ZSTD vs ZLIB: > > The test: > 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 > > > The results: > 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.5 > compressed image size in both cases: ~1.4G > > Denis Plotnikov (3): > qcow2: introduce compression type feature > qcow2: rework the cluster compression routine > qcow2: add zstd cluster compression > > block/qcow2-threads.c | 172 ++++++++++++++++++++++++++++++++++---- > block/qcow2.c | 100 ++++++++++++++++++++++ > block/qcow2.h | 26 ++++-- > configure | 34 ++++++++ > docs/interop/qcow2.txt | 39 ++++++++- > include/block/block_int.h | 1 + > qapi/block-core.json | 23 ++++- > 7 files changed, 371 insertions(+), 24 deletions(-) >
-- Best, Denis