[PATCH 00/11] makedumpfile: Add zstd support for makedumpfile
Tao Liu
ltao at redhat.com
Tue Sep 14 01:33:06 PDT 2021
Hi Kazu,
Thanks for reviewing the patchset!
On Tue, Sep 14, 2021 at 07:04:24AM +0000, HAGIO KAZUHITO(萩尾 一仁) wrote:
> Hi Tao Liu,
>
> Thanks for the patchset!
>
> -----Original Message-----
> > This patch set adds ZSTD compression support to makedumpfile. With ZSTD compression
> > support, the vmcore dump size and time consumption can have a better balance than
> > zlib/lzo/snappy.
> >
> > How to build:
> >
> > Build using make:
> > $ make USEZSTD=on
> >
> > Performance Comparison:
> >
> > How to measure
> >
> > I took a x86_64 machine which had 4T memory, and the compression level
> > range from (-3 to 4) for ZSTD, as well as zlib/lzo/snappy compression.
> > All testing was done by makedumpfile single thread mode.
> >
> > As for compression performance testing, in order to avoid the performance
> > bottle neck of disk I/O, I used the following makedumpfile cmd, which took
> > lzo compression as an example. "--dry-run" will not write any data to disk,
> > "--show-stat" will output the vmcore size after compression, and the time
> > consumption can be collected from the output logs.
> >
> > $ makedumpfile -d 0 -l /proc/kcore vmcore --dry-run --show-stat
> >
> >
> > As for decompression performance testing, I only tested the (-d 31) case,
> > because the vmcore size of (-d 0) case is too big to fit in the disk, in
> > addtion, to read a oversized file from disk will encounter the disk I/O
> > bottle neck.
> >
> > I triggered a kernel crash and collected a vmcore. Then I converted the
> > vmcore into specific compression format using the following makedumpfile
> > cmd, which would get a lzo format vmcore as an example:
> >
> > $ makedumpfile -l vmcore vmcore.lzo
> >
> > After all vmcores were ready, I used the following cmd to perform the
> > decompression, the time consumption can be collected from the logs.
> >
> > $ makedumpfile -F vmcore.lzo --dry-run --show-stat
> >
> >
> > Result charts
> >
> > For compression:
> >
> > makedumpfile -d31 | makedumpfile -d0
> > Compression time vmcore size | Compression time vmcore size
> > zstd-3 325.516446 5285179595 | 8205.452248 51715430204
> > zstd-2 332.069432 5319726604 | 8057.381371 51732062793
> > zstd-1 309.942773 5730516274 | 8138.060786 52136191571
> > zstd0 439.773076 4673859661 | 8873.059963 50993669657
> > zstd1 406.68036 4700959521 | 8259.417132 51036900055
> > zstd2 397.195643 4699263608 | 8230.308291 51030410942
> > zstd3 436.491632 4673306398 | 8803.970103 51043393637
> > zstd4 543.363928 4668419304 | 8991.240244 51058088514
> > zlib 561.217381 8514803195 | 14381.755611 78199283893
> > lzo 248.175953 16696411879 | 6057.528781 90020895741
> > snappy 231.868312 11782236674 | 5290.919894 245661288355
> >
> > For decompression:
> >
> > makedumpfile -d31
> > decompress time vmcore size
> > zstd-3 477.543396 5289373448
> > zstd-2 478.034534 5327454123
> > zstd-1 459.066807 5748037931
> > zstd0 561.687525 4680009013
> > zstd1 547.248917 4706358547
> > zstd2 544.219758 4704780719
> > zstd3 555.726343 4680009013
> > zstd4 558.031721 4675545933
> > zlib 630.965426 8555376229
> > lzo 427.292107 16849457649
> > snappy 446.542806 11841407957
> >
> > Discussion
> >
> > For zstd range from -3 to 4, compression level 2 (ZSTD_dfast) has
> > the best time consumption and vmcore dump size balance.
>
> Do you have a result of -d 1 compression test? I think -d 0 is not
> practical, I would like to see a -d 1 result of such a large vmcore.
>
No, I haven't tested the -d 1 case. I have returned the machine which used
for performance testing, I will borrow and test on it again, please wait for
a while...
> And just out of curiosity, what version of zstd are you using?
> When I tested zstd last time, compression level 1 was faster than 2, iirc.
>
The OS running on the machine is fedora34, I used its default zstd package, whose
version is v1.4.9.
> btw, ZSTD_dfast is an enum of ZSTD_strategy, not for compression level?
Yes, it's enum of ZSTD_strategy [1].
[1]: https://zstd.docsforge.com/dev/api-documentation/#advanced-compression-api-requires-v140
Thanks,
Tao Liu
> (no need to update for now, I will review later)
>
> Thanks,
> Kazu
>
> >
> > For zstd2/zlib/lzo/snappy, zstd2 has the smallest vmcore size, also
> > the best time consumption and vmcore dump size balance.
> >
> > Tao Liu (11):
> > Add dump header for zstd.
> > Add command-line processing for zstd
> > Add zstd build support
> > Notify zstd unsupporting when disabled
> > Add single thread zstd compression processing
> > Add parallel threads zstd compression processing
> > Add single thread zstd uncompression processing
> > Add parallel threads zstd uncompression processing
> > Add zstd help message
> > Add zstd manual description
> > Add zstd README description
> >
> > Makefile | 5 +++
> > README | 5 ++-
> > diskdump_mod.h | 1 +
> > makedumpfile.8 | 7 ++--
> > makedumpfile.c | 101 +++++++++++++++++++++++++++++++++++++++++++++----
> > makedumpfile.h | 10 +++++
> > print_info.c | 30 ++++++++++-----
> > 7 files changed, 138 insertions(+), 21 deletions(-)
> >
> > --
> > 2.29.2
>
More information about the kexec
mailing list