Ted Ts’o为Linux 6.5的合并窗口提交了有关EXT4的功能变化。EXT4在这一轮升级中带来了各种清理、错误修复和其他增强功能,但有一项性能优化值得关注。EXT4与Linux 6.5合并后,围绕并行直接I/O(DIO)覆盖的性能将有很大的改善。Red Hat公司的Brian Foster从事这项优化工作,允许同时进行不对齐的DIO覆盖,结果看到了更好的性能。
通过FIO这个补丁,他的测试案例从8724 KiB/s提高到1565 MiB/s。
获取补丁:
https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git/commit/?h=dev&id=310ee0902b8d9d0a13a5a13e94688a5863fa29c2
Foster在补丁中解释说:
“我们有报告说,由于ext4中增加了排他性限制,子块(无对齐)直接写入的性能明显下降。对不对齐直接写入的排他性要求的目的是为了避免iomap dio层中未序列化的部分块清零在重叠写入中造成的数据损坏。
XFS由于同样的基本原因也有类似的要求,但却没有像ext4那样遭受极端的性能退步。原因是XFS利用了IOMAP_DIO_OVERWRITE_ONLY模式,该模式允许主动提交并发的无对齐I/O,并踢回需要部分块清零的写操作,以便它们可以在一个安全、排他的上下文中提交。由于ext4已经在提交前执行了大部分这些检查,它可以支持类似的做法,而不一定要依赖iomap标志和相关的重试机制。
更新dio写提交路径,以允许同时提交不对齐的直接写操作,这些写操作是纯粹的覆盖,所以不需要块清零。”
Linux 6.5的EXT4更新的完整列表可以通过这个拉动请求找到:
https://lore.kernel.org/lkml/20230627153618.GA329146@mit.edu/