Btrfs Seeing Some Nice Performance Improvements For Linux 5.9
With more eyes on Btrfs given the file-system is set to become the default for Fedora 33 desktop spins, there are some interesting performance optimizations coming to Btrfs with the in-development Linux 5.9 kernel.
On the performance front for Btrfs in Linux 5.9 there are optimized helpers for little-endian architectures to avoid little/big endian conversions around the on-disk format, tree-log/fsync optimizations yielding around a 12% lower maximum latency for the Dbench benchmark, faster mount times for large file-systems in the terabyte range, and parallel fsync optimizations.
On the parallel fsync side, Linux 5.9 is speeding up its performance with reflinked/deduplicated extents, which can improve throughput roughly by 50% on average and runtime decreasing by around 30% on average. In some cases the throughput improvement and quicker runtime is even more drastic. Additionally, there is also a speed-up to the Btrfs parallel fsync code around checksum tree lookups and contentions. With two tasks running there is around a 20% throughput improvement and -16% runtime or when up to 64 tasks yielded +200% for the throughput and -66% runtime. Damn!
The Btrfs driver for Linux 5.9 also introduces the new rescue= mount option for consolidating different recovery-related options like "nologreplay" and "usebackuproot". Other work includes deprecating the inode_cache mount option, removing other already deprecated options, FS_INFO ioctl enhancements, and a range of other code improvements.
More details on the Btrfs changes for this next version of the Linux kernel via this Git merge.
On the performance front for Btrfs in Linux 5.9 there are optimized helpers for little-endian architectures to avoid little/big endian conversions around the on-disk format, tree-log/fsync optimizations yielding around a 12% lower maximum latency for the Dbench benchmark, faster mount times for large file-systems in the terabyte range, and parallel fsync optimizations.
On the parallel fsync side, Linux 5.9 is speeding up its performance with reflinked/deduplicated extents, which can improve throughput roughly by 50% on average and runtime decreasing by around 30% on average. In some cases the throughput improvement and quicker runtime is even more drastic. Additionally, there is also a speed-up to the Btrfs parallel fsync code around checksum tree lookups and contentions. With two tasks running there is around a 20% throughput improvement and -16% runtime or when up to 64 tasks yielded +200% for the throughput and -66% runtime. Damn!
The Btrfs driver for Linux 5.9 also introduces the new rescue= mount option for consolidating different recovery-related options like "nologreplay" and "usebackuproot". Other work includes deprecating the inode_cache mount option, removing other already deprecated options, FS_INFO ioctl enhancements, and a range of other code improvements.
More details on the Btrfs changes for this next version of the Linux kernel via this Git merge.
36 Comments