Messages in this thread | | | Date | Sat, 15 Apr 2023 00:50:01 +0200 | From | Jonathan Neuschäfer <> | Subject | Re: [PATCH 0/3] ARM ZSTD boot compression |
| |
On Wed, Apr 12, 2023 at 11:33:15PM +0200, 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?
No clear idea.
I guess it might be related to caching or unaligned memory accesses somehow.
I suspected CONFIG_CPU_DCACHE_WRITETHROUGH, which was enabled, but disabling it didn't improve performance.
> 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?
Unfortunately, the unzstd userspace tool requires a buffer of of 128 MiB (the window size), which is too big for my usual devboard (which has about 100 MiB available). I'd have to test on a different board.
Jonathan
--- # uname -a Linux buildroot 6.3.0-rc6-00020-g023058d50f2f #1212 PREEMPT Fri Apr 14 20:58:21 CEST 2023 armv5tejl GNU/Linux
# ls -lh total 13M -rw-r--r-- 1 root root 7.5M Jan 1 00:07 piggy.lzo -rw-r--r-- 1 root root 5.8M Jan 1 00:07 piggy.zstd
# time lzop -d piggy.lzo -c > /dev/null lzop: piggy.lzo: warning: ignoring trailing garbage in lzop file Command exited with non-zero status 2 real 0m 3.38s user 0m 3.20s sys 0m 0.18s
# time unzstd piggy.zstd -c > /dev/null [ 858.270000] __vm_enough_memory: pid: 114, comm: unzstd, not enough memory for the allocation piggy.zstd : Decoding error (36) : Allocation error : not enough memory Command exited with non-zero status 1 real 0m 0.03s user 0m 0.01s sys 0m 0.03s [unhandled content-type:application/pgp-signature] | |