Following Windows ReFS improvements, Linux getting F2FS, Btrfs, EXT4 performance boosts
Microsoft has been gradually expanding support for ReFS (Resilient File System) in recent Windows 11 Insider builds. First noticed back in January, a hidden feature inside Dev build 25281 would allow users to install Windows 11 on a ReFS volume. The company has since added more ReFS-based features like “Dev Drive”VHD volumes. Microsoft also updated the underlying ReFS version to 3.10 in one of the recent Canary channel builds.
While the use of ReFS on Windows grows, Linux on the other hand is also making some steady progress on some of its file systems. From some of the recent Linux kernel patches, it seems some of the most popular Linux file systems, Flash-Friendly File System (F2FS), B-Tree Filesystem (Btrfs), and fourth extended filesystem (EXT4), are getting significant performance boosts.
For example, Btrfs is getting around a 10% performance boost on SATA SSDs. Perhaps the improvement on NVMe drives may even be higher:
Always read in 64KiB block size The real blocksize of read starts at 64KiB, and ends at 512K. This already results a better performance even for the worst case:
- With patchset: 404.81MiB/s
- Without patchset: 369.30MiB/s
Around 10% performance improvement on an SATA SSD.
Moving on to EXT4, there are a number of optimizations in place:
There are a number of major cleanups in ext4 this cycle:
- The data=journal writepath has been significantly cleaned up and simplified, and reduces a large number of data=journal special cases by Jan Kara.
- Ojaswin Muhoo has replaced linked list used to track extents that have been used for inode preallocation with a red-black tree in the multi-block allocator. This improves performance for workloads which do a large number of random allocating writes.
- Thanks to Kemeng Shi for a lot of cleanup and bug fixes in the multi-block allocator.
- Matthew wilcox has converted the code paths for reading and writing ext4 pages to use folios. * Jason Yan has continued to factor out ext4_fill_super() into smaller functions for improve ease of maintenance and comprehension.
- Josh Triplett has created an uapi header for ext4 userspace API’s.
Finally, here are the improvements on F2FS:
Enhancement:
- support non-power-of-two zone size for zoned device
- remove sharing the rb_entry structure in extent cache
- refactor f2fs_gc to call checkpoint in urgent condition – support iopoll
Overall, it looks like Linux kernel version 6.4 will be quite decent in terms of performance.
Source: LKML (1), (2), (3) via Phoronix
Leave a Reply