• Lasse Collin's avatar
    xz: use 128 MiB dictionary and force single-threaded mode · 8653c909
    Lasse Collin authored
    This only affects kernel image compression, not any other xz usage.
    
    Desktop kernels on x86-64 are already around 60 MiB.  Using a dictionary
    larger than 32 MiB should have no downsides nowadays as anyone building
    the kernel should have plenty of RAM.  128 MiB dictionary needs 1346 MiB
    of RAM with xz versions 5.0.x - 5.6.x in single-threaded mode.  On archs
    that use xz_wrap.sh, kernel decompression is done in single-call mode so a
    larger dictionary doesn't affect boot-time memory requirements.
    
    xz >= 5.6.0 uses multithreaded mode by default which compresses slightly
    worse than single-threaded mode.  Kernel compression rarely used more than
    one thread anyway because with 32 MiB dictionary size the default block
    size was 96 MiB in multithreaded mode.  So only a single thread was used
    anyway unless the kernel was over 96 MiB.
    
    Comparison to CONFIG_KERNEL_LZMA: It uses "lzma -9" which mapped to 32 MiB
    dictionary in LZMA Utils 4.32.7 (the final release in 2008).  Nowadays the
    lzma tool on most systems is from XZ Utils where -9 maps to 64 MiB
    dictionary.  So using a 32 MiB dictionary with CONFIG_KERNEL_XZ may have
    compressed big kernels slightly worse than the old LZMA option.
    
    Comparison to CONFIG_KERNEL_ZSTD: zstd uses 128 MiB dictionary.
    
    Link: https://lkml.kernel.org/r/20240721133633.47721-14-lasse.collin@tukaani.orgSigned-off-by: default avatarLasse Collin <lasse.collin@tukaani.org>
    Reviewed-by: default avatarSam James <sam@gentoo.org>
    Cc: Albert Ou <aou@eecs.berkeley.edu>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Emil Renner Berthing <emil.renner.berthing@canonical.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Joel Stanley <joel@jms.id.au>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Jubin Zhong <zhongjubin@huawei.com>
    Cc: Jules Maselbas <jmaselbas@zdiv.net>
    Cc: Krzysztof Kozlowski <krzk@kernel.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: Rui Li <me@lirui.org>
    Cc: Simon Glass <sjg@chromium.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    8653c909
xz_wrap.sh 985 Bytes