皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Linux 6.19 默认启用每 CPU BIO 缓存以帮助性能

Linux 6.19 默认启用每 CPU BIO 缓存以帮助性能

上周看到了 Linux 6.19 合并窗口中的主要块设备和 IO_uring 特性补丁,但有一些额外的块子系统内容在周一被合并。现在有各种 NVMe 更新已被合并,同时默认启用每 CPU BIO 缓存以帮助文件系统性能。

Linux 6.19 的这次合并主要涉及将 NVMe 功能更新落地,同时也包含了启用 per-CPU BIO 缓存的补丁。这在提升 Linux 文件系统性能方面显得尤为有趣。

字节跳动工程师负责此次默认缓存更改,并在补丁系列中进行了说明:

“目前,每 CPU BIO 缓存仅在 io_uring + 原始块设备中使用,文件系统也可以使用此功能来提升性能。经过讨论,我们认为默认启用每 CPU BIO 缓存更好。”

补丁还提供了一些具体的数据:

“自从提交 12e4e8c7ab59 (“io_uring/rw: enable bio caches for IRQ rw”) 之后,bio_put 在任务和中断上下文中都是安全的,bio_alloc_bioset 在任务上下文中是安全的,且没有人会在中断上下文中调用它,因此我们可以默认启用每 CPU BIO 缓存。”

以 t/io_uring 和 ext4+nvme 进行测试:
taskset -c 6 /root/fio/t/io_uring -p0 -d128 -b4096 -s1 -c1 -F1 -B1 -R1
-X1 -n1 -P1 /mnt/testfile
基准 IOPS 为 562K,补丁 IOPS 为 574K。bio_alloc_bioset 的 CPU 使用率从 1.42%降低到 1.22%。

最坏的情况是,在 CPU A 上分配 bio,但在 CPU B 上释放,仍然使用 t/io_uring 和 ext4+nvme:
基准 IOPS 是 648K,补丁 IOPS 是 647K。

此外,使用 fio 测试 ext4/xfs,在 null_blk 和 nvme 上使用 libaio/sync/io_uring,没有明显的性能退化。”

从 562K IOPS 提升到 574K IOPS 并不差,尤其是伴随着 CPU 使用率的轻微下降,再加上每一点性能提升的累积。

转自  Linux 6.19 Enables Per-CPU BIO Caching By Default For Helping Performance – Phoronix