Linux Kernel 5.10.8 发布,最终解决了 Btrfs 的性能问题

来源: 投稿
作者: 御坂弟弟
2021-01-19 07:11:00

Linux 内核 5.10.8 已经发布。作为 Linux LTS 5.10 系列的最新版本,此次更新解决了 Btrfs 文件系统的性能问题。

Btrfs 是一种支持写入时复制(COW)的文件系统,目标是取代 Linux 当时的 ext3 文件系统,改善 ext3 的限制,特别是单个文件的大小,总文件系统大小或文件检查和加入ext3未支持的功能,像是可写快照(writable snapshots)、快照的快照(snapshots of snapshots)、内建磁盘阵列(RAID),以及子卷(subvolumes)。Btrfs也宣称专注在“容错、修复及易于管理”。

然而,去年 10 月份的提交 ”btrfs: use btrfs_start_delalloc_roots in shrink_delalloc”  引起了一个性能问题:此前在使用正常的写回路径来回收延迟分配空间时,我们会提供想要刷新的页面数,而此提交更改为刷新大量 inode,在某些情况下这个数量还会剧烈增加。这严重影响了性能。并且由于后续的 "btrfs: fix deadlock when cloning inline extent and low on free metadata space“ 提交使用到了上述更改导致无法还原。 经过测试,在 5.10 中解压 Firefox 的压缩文件(360MiB xz compressed/1.5GiB uncompressed)相比于在 5.9 中,要花费5到20倍的时间。这种现象在 SSD 中更明显。

因此,在 “btrfs: shrink delalloc pages instead of full inodes” 提交中,在 btrfs_start_delalloc_roots() 函数中提供要刷新的页面数,并通过  writeback_control 结构和  sync_inode() 函数来解决刷新问题。再次进行测试(256GiB of ram, 56 cores, 2TiB Intel NVMe drive),结果如下:

可以看见效果显著。此外,此次更新还包括修复使用较旧的 glibc 时 net.o 编译失败、修复硬件 TID 泄漏、使用 VMAP 堆栈修复 RTAS 机器检查、 修复恢复过程中的死锁、 修复 MTU 对于 XDP 太大时的错误消息等。

详细内容请查看更新公告

延伸阅读

Linux 5.10 出现 Btrfs 性能急剧下降的问题

展开阅读全文
点击加入讨论🔥(10) 发布并加入讨论🔥
本篇精彩评论
这是下一代文件系统,主打 cow 和快照,和 zfs 之类的一样,主要用于服务器环境。
2021-01-19 10:16
4
举报
FreeBSD 下使用稳定的 ZFS 已经十多年了,Linux 下的 Btrfs 才解决关键性问题,距离稳定还不知道何年何月,然而已经不重要了,OepnZFS 已经让 Linux 用上了稳定的 ZFS,哈哈哈
2021-01-26 14:29
2
举报
10 评论
3 收藏
分享
返回顶部
顶部