On Mon, May 30, 2022 at 08:41:34PM +0200, Paul Spooren wrote:
> Hi,
> 
> I’m an OpenWrt developer and we work on an operation system for routers and 
> overall network facing embedded devices. Since storage is often limited on 
> our targeted devices we use SquashFS to compress everything, total image 
> sizes are less than 10 MegaBytes.
> 
> Reading about erofs I’m very keen to adopt it for our case, however giving it 
> a first try the storage performance seems to be significantly _worse_ than 
> the default SquashFS implementation. Since you ran benchmarks in the past, 
> could you give me advise if I’m missing anything?

What the meaning of `performance'? I don't think the size of images
mean runtime performance anyway.

> 
> For the test I used erofs-utils as of 
> a134ce7c39a5427343029e97a62665157bef9bc3 (2022-05-17) and compressed the 
> x86/64 root filesystem of a standard OpenWrt image[1]. I’m seeing a 
> difference of one MegaByte which is about 30% worse in this context.
> 
> My test:
> 
> $ ./staging_dir/host/bin/mkfs.erofs -zlzma erofs.root 
> ./build_dir/target-x86_64_musl/root-x86

Have you try with

-zlzma -C 65536 -Eztailpacking

by default, EROFS uses 4k compression rather than Squashfs 128k.

> mkfs.erofs 1.4
> <W> erofs: EXPERIMENTAL MicroLZMA feature in use. Use at your own risk!
> <W> erofs: Note that it may take more time since the compressor is still 
> single-threaded for now.
> Build completed.
> 
> $ mksquashfs -comp xz ./build_dir/target-x86_64_musl/root-x86 squashfs.root
> 
> $ ls -lh *.root
> -rw-r--r-- 1 ubuntu ubuntu 4.3M May 30 20:27 erofs.root
> -rw-r--r-- 1 ubuntu ubuntu 3.3M May 30 20:28 squashfs.root

Even EROFS now supports big pcluster and ztailpacking features,
Squashfs supports a feature called fragments which compresses
several tails of files in a fragment. It's obviously beneficial
to the final size of images but it can read unrelated data of
other files even such files are very small.

You can try a big file with EROFS and Squashfs, and you can
see the difference.

Btw, MicroLZMA is still an experimental feature for now, due to 
three reasons:
 - XZ utils hasn't release a stable version for now, which I think
   Lasse will release a stable version this year;

 - EROFS has a finalized on-disk MircoLZMA support since Linux 5.16,
   so users can mount MicroLZMA since 5.16.  Yet currently EROFS is
   not quite optimized for such slow algorithm, since it needs a
   completely different strategy from LZ4.  I'm working on that
   together with folio work;

 - We need a similiar `fragment' feature to catch squashfs under a
   lot of files.

> 
> Is erofs just not meant for such small storages?

If you care more about the size of images, I personally prefer to
squashfs for now until we handle all the things above.

Thanks,
Gao Xiang

> 
> Thanks for all further comments!
> 
> Best,
> Paul
> 
> [1]: 
> https://downloads.openwrt.org/snapshots/targets/x86/64/openwrt-x86-64-rootfs.tar.gz

Reply via email to