Hello,
While working on the change proposal https://fedoraproject.org/wiki/Changes/OptimizeSquashFS
I discovered that several kernel configuration options are set sub-optimally in Fedora. In RHEL 8, the optimal configuration is used. If we set those options to match RHEL 8, a performance improvement could be achieved while reading the SquashFS filesystem.
Below you can see an excerpt from the configuration help:
Set in RHEL 8:
SQUASHFS_FILE_DIRECT Directly decompress file data into the page cache. Doing so can significantly improve performance because it eliminates a memcpy and it also removes the lock contention on the single buffer.
SQUASHFS_DECOMP_MULTI_PERCPU By default Squashfs uses a single decompressor but it gives poor performance on parallel I/O workloads when using multiple CPU machines due to waiting on decompressor availability.
This decompressor implementation uses a maximum of one decompressor per core. It uses percpu variables to ensure decompression is load-balanced across the cores.
Set in Fedora: SQUASHFS_DECOMP_SINGLE Traditionally Squashfs has used single-threaded decompression. Only one block (data or metadata) can be decompressed at any one time. This limits CPU and memory usage to a minimum.
SQUASHFS_FILE_CACHE Decompress file data into an intermediate buffer and then memcopy it into the page cache.
The SquashFS filesystem is used on installation medium. So making the change I propose should improve the user experience during installation. It should also improve the user experience while booting from Fedora Live image.
Kind regards,
On Fri, Sep 18, 2020 at 10:49:09AM +0200, Bohdan Khomutskyi wrote:
Hello,
While working on the change proposal https://fedoraproject.org/wiki/Changes/OptimizeSquashFS
I discovered that several kernel configuration options are set sub-optimally in Fedora. In RHEL 8, the optimal configuration is used. If we set those options to match RHEL 8, a performance improvement could be achieved while reading the SquashFS filesystem.
Below you can see an excerpt from the configuration help:
Would you be willing to submit a merge request with these changes for Fedora? Then we can have a discussion and review.
Cheers, Don
Set in RHEL 8:
SQUASHFS_FILE_DIRECT     Directly decompress file data into the page cache.     Doing so can significantly improve performance because     it eliminates a memcpy and it also removes the lock contention     on the single buffer.
SQUASHFS_DECOMP_MULTI_PERCPU     By default Squashfs uses a single decompressor but it gives     poor performance on parallel I/O workloads when using multiple CPU     machines due to waiting on decompressor availability.
    This decompressor implementation uses a maximum of one     decompressor per core. It uses percpu variables to ensure     decompression is load-balanced across the cores.
Set in Fedora: SQUASHFS_DECOMP_SINGLE     Traditionally Squashfs has used single-threaded decompression.     Only one block (data or metadata) can be decompressed at any     one time. This limits CPU and memory usage to a minimum.
SQUASHFS_FILE_CACHE     Decompress file data into an intermediate buffer and then     memcopy it into the page cache.
The SquashFS filesystem is used on installation medium. So making the change I propose should improve the user experience during installation. It should also improve the user experience while booting from Fedora Live image.
Kind regards,
-- Bohdan Khomutskyi Software engineer Red Hat _______________________________________________ kernel mailing list -- kernel@lists.fedoraproject.org To unsubscribe send an email to kernel-leave@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/kernel@lists.fedoraproject.org
kernel@lists.fedoraproject.org