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
> 


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to