Hello,

I have implemented the necessary changes in Pungi, the software that creates Fedora compose. So this change has a potential of moving forward.

I have created 2 pull-requests for release engineering for this change:

https://pagure.io/pungi-fedora/pull-request/871

https://pagure.io/pungi-fedora/pull-request/872

Fedora release engineering would have the ability to test this change and provide fresh test results after Pungi 4.2.4 is released.

I hope this change could land in Fedora 33.

As a reminder, here is the change proposal: https://fedoraproject.org/wiki/Changes/OptimizeSquashFS

Regards,

On 13/05/2020 13:32, Bohdan Khomutskyi wrote:

Hello,

It was a long time since the last message in this change proposal.

Recently I was working to reduce the impact of the increased compression ratio on the installation image size for Fedora. I have achieved outstanding results -- working proof of concept. With the following change: https://github.com/rhinstaller/anaconda/pull/2292 , not only the higher compression does not impact the installation time. In certain cases, the installation time is even reduced. This is because of the fact the filesystem internal structure aware process is used to install the system from the SquashFS. The new process also allows for taking advantage of the multi-core architecture of the system during installation -- does the decompression on multiple processors in parallel.

The combination of https://github.com/rhinstaller/anaconda/pull/2292 and https://fedoraproject.org/wiki/Category:Changes/OptimizeSquashFS should reduce _both_ the image size and the installation time. The installation time will be reduced in case the system is installed from the SquashFS. This is the case in Fedora Workstation.

For optimization of the SquashFS, I will work on requesting the support of the required functionality in the Pungi compose build software.

On 25/01/2020 16:36, Bohdan Khomutskyi wrote:
Hello,

I opened a request to anaconda team with a draft patch to use unsquashfs instead of rsync: https://github.com/rhinstaller/anaconda/pull/2292.
That should lower the installation time from Live media.
Adjustments should be made to make this patch work, I was not able to install the image using this patch. Anaconda installer crashes.

Chris,

> Could this be read amplification?
> That's probably mitigated with unsquashfs.
That could be read amplification, it will be mitigated with unsquashfs.
The memory usage should not be a problem: xz (1) manual page, states that 2 MiB of memory required to decompress an archive with 1MiB block size. My previous observations found that the squashfs is currently decompressed in single thread. I welcome additional testing, but I think the memory limit will not be a problem.

> If image size is a significant consideration, then evaluation of erofs
> seems indicated. It promises both significant compression and CPU
> performance. The intended use case is for Android device read-only
> partitions with both limited storage and CPU/power capacity.

I briefly reviewed the document and found that LZ4 is the only supported algorithm in EROFS, even if EROFS has perfect layout of the filesystem, it's to good to be true it can outperform the XZ in compression ratio tests. The difference for SquashFS LZ4hc 1M vs XZ 1M is >40%.

On Fri, Jan 24, 2020 at 2:17 AM Chris Murphy <lists@colorremedies.com> wrote:
On Mon, Jan 20, 2020 at 1:38 AM Bohdan Khomutskyi <bkhomuts@redhat.com> wrote:
>
> In my previous message, I mentioned that CPU is underutilized during installation. I haven't investigated further why, but I suspect it's due to the inefficiency caused by the usage of the loop device and/or inefficiency in the rsync itself.

Could this be read amplification?

This paper on erofs suggests read amplification can be a significant
side effect with squashfs. It could be exacerbated with random reads,
and I expect it gets worse with larger block size. That's probably
mitigated with unsquashfs.

Specifically page 4, 2nd paragraph.
https://www.usenix.org/system/files/atc19-gao.pdf

This also makes me wonder about the memory consumption effect of a 1M
block size, especially for Fedora ARM where it looks like Raspberry Pi
2B

Most of the ARM images are raw.xz but some are bootable ISOs, dvd and
netinstall. And those contain a squashfs sysroot. Even if there's no
out of memory problem, it could result in paging. All ISOs setup
swap-on-ZRAM these days, lives, DVD, and netinstall. I think the ARM
case needs testing before committing to 1M block size across all ISOs,
or implementing changes in Fedora release engineering.


--
Chris Murphy



--
Bohdan Khomutskyi, RHCE
Release configuration management engineer, PnT DevOps
Red Hat Czech s.r.o
T: +420532270289     IRC: bkhomuts 
-- 
Bohdan Khomutskyi

Red Hat
-- 
Bohdan Khomutskyi
Red Hat