即将进入Linux 7.2内核开发周期的一项改动,将大幅提升Btrfs的直接I/O写入性能。这次性能提升幅度很大,但从技术角度来说,它其实是修复了几年前一次代码改动误删原有逻辑导致的性能退化。
“2023年Btrfs切换到新挂载API之前,我们原本是在btrfs_mount_root()函数中设置SB_NOSEC标记。这个标记会告诉虚拟文件系统(VFS):该文件系统中可能存在不携带安全扩展属性的文件,从而允许VFS做一些优化。
btrfs_mount_root()
SB_NOSEC
不幸的是,切换挂载API的时候漏掉了这行代码,这导致IS_NOSEC判断对Btrfs的索引节点永远返回假。其结果就是,btrfs_direct_write()调用永远会独占索引节点锁,因此对同一个文件的直接I/O写入必须排队串行执行。
IS_NOSEC
btrfs_direct_write()
在我的测试机器上,仅这一行修改就让直接I/O吞吐量提升了约59%。”
仅仅一行代码就带来了非常可观的提升:吞吐量从826MB/s提升到1311MB/s,提升幅度接近60%。
英特尔的内核测试机器人在自家硬件测试中也报告称,这项改动给Btrfs带来了约12%的性能提升,测试硬件为NVMe固态硬盘。
目前该补丁已经进入内核的-next开发分支,预计这项Btrfs改动会在6月开启的Linux 7.2合并窗口中正式合入主线内核。
-next
http://www.linuxeden.com/a/161154
总感觉 Btrfs 跟 磐石 更配
Featured Collection
Popular Ranking
Popular Events
即将进入Linux 7.2内核开发周期的一项改动,将大幅提升Btrfs的直接I/O写入性能。这次性能提升幅度很大,但从技术角度来说,它其实是修复了几年前一次代码改动误删原有逻辑导致的性能退化。
“2023年Btrfs切换到新挂载API之前,我们原本是在
btrfs_mount_root()函数中设置SB_NOSEC标记。这个标记会告诉虚拟文件系统(VFS):该文件系统中可能存在不携带安全扩展属性的文件,从而允许VFS做一些优化。仅仅一行代码就带来了非常可观的提升:吞吐量从826MB/s提升到1311MB/s,提升幅度接近60%。
英特尔的内核测试机器人在自家硬件测试中也报告称,这项改动给Btrfs带来了约12%的性能提升,测试硬件为NVMe固态硬盘。
目前该补丁已经进入内核的
-next开发分支,预计这项Btrfs改动会在6月开启的Linux 7.2合并窗口中正式合入主线内核。http://www.linuxeden.com/a/161154