On Thu, Apr 13, 2023 at 01:13:21PM +0200, Arnd Bergmann wrote: > On Wed, Apr 12, 2023, at 23:33, Arnd Bergmann wrote: > > On Wed, Apr 12, 2023, at 23:21, Jonathan Neuschäfer wrote: > >> This patchset enables ZSTD kernel (de)compression on 32-bit ARM. > >> Unfortunately, it is much slower than I hoped (tested on ARM926EJ-S): > >> > >> - LZO: 7.2 MiB, 6 seconds > >> - ZSTD: 5.6 MiB, 60 seconds > > > > That seems unexpected, as the usual numbers say it's about 25% > > slower than LZO. Do you have an idea why it is so much slower > > here? How long does it take to decompress the > > generated arch/arm/boot/Image file in user space on the same > > hardware using lzop and zstd? > > I looked through this a bit more and found two interesting points: > > - zstd uses a lot more unaligned loads and stores while > decompressing. On armv5 those turn into individual byte > accesses, while the others can likely use word-aligned > accesses. This could make a huge difference if caches are > disabled during the decompression. > > - The sliding window on zstd is much larger, with the kernel > using an 8MB window (zstd=23), compared to the normal 32kb > for deflate (couldn't find the default for lzo), so on > machines with no L2 cache, it is much likely to thrash a > small L1 dcache that are used on most arm9. > > Arnd Make sense. For ZSTD as used in kernel decompression (the zstd22 configuration), the window is even bigger, 128 MiB. (AFAIU) Thanks Jonathan