On 28.04.20 22:00, Denis Plotnikov wrote: > 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 <dplotni...@virtuozzo.com> > QAPI part: > Acked-by: Markus Armbruster <arm...@redhat.com> > --- > docs/interop/qcow2.txt | 1 + > configure | 2 +- > qapi/block-core.json | 3 +- > block/qcow2-threads.c | 169 +++++++++++++++++++++++++++++++++++++++++ > block/qcow2.c | 7 ++ > slirp | 2 +- > 6 files changed, 181 insertions(+), 3 deletions(-)
[...] > diff --git a/block/qcow2-threads.c b/block/qcow2-threads.c > index 7dbaf53489..a0b12e1b15 100644 > --- a/block/qcow2-threads.c > +++ b/block/qcow2-threads.c [...] > +static ssize_t qcow2_zstd_decompress(void *dest, size_t dest_size, > + const void *src, size_t src_size) > +{ [...] > + /* > + * The compressed stream from the input buffer may consist of more > + * than one zstd frame. Can it? Max
signature.asc
Description: OpenPGP digital signature