Improve compression ratio of SquashFS filesystem on the installation media.
Name: Bohdan Khomutskyi
Email: bkhomuts@redhat.com
Targeted release: I propose this change for Fedora 32
Last updated: Jan 5 2020
Pagure.io issue: https://pagure.io/releng/issue/9127
I was unable to create an article in Fedora wiki system.
As of Fedora 31, the LiveOS/squashfs.img file on the installation image, is compressed with default settings of mksquashfs. The standard configuration is set to XZ algorithm with block size of 128k and BCJ filter enabled. Those parameters can be adjusted which will lead to a better compression ratio and/or reduction of the CPU usage at build time.
This is simple to achieve. Recently, Lorax has gotten support[1] for adjusting the compression options for mksquashfs via the configuration file. The file should be altered as following:
[compression]
bcj = yes
args = -b 1M -Xdict-size 1M -no-recovery
Where -b 1M and -Xdict-size 1M are block and dictionary sizes respectively. Could be adjusted.
Reduction of the installation media size and the cost of storing and distributing Fedora.
Reduction of the CPU usage at build time. Depending on which compression parameters chosen.
See a graphical detail at https://pagure.io/releng/issue/9127.
Proposal owners:
The build environment should have support for adjusting the Lorax configuration file.. Lorax is a program that produces the LiveOS/squashfs.img file on the installation media.
One of the way to allow for such customization, is to add a feature in Pungi, to allow for passing -c option to Lorax.
Release engineering: #9127
Policies and guidelines: N/A
Trademark approval: N/A
This change comes at a cost of higher memory usage during the installation. Based on my personal estimations, this should not be the issue. Since the decompression should require up to 1MiB per thread.
Increasing the block size on the current configuration with EXT4 file system, should increase latency while accessing the EXT4 filesystem. The exact impact is to be evaluated.
The impact of latency will be reduced, if the plain SquashFS option is be choosen.
N/A
N/A
mksquashfs(1)
https://pagure.io/releng/issue/8646
--
Bohdan Khomutskyi
Release Configuration
Management engineer
Red Hat