Linux 7.2 改进匿名/未命名管道性能,提升Shell管道及其他
摘要
Linux 7.2 内核合并了一项针对匿名/未命名管道的性能优化,通过在互斥锁外部预分配页面来避免竞争,使吞吐量提升 6-48%,延迟降低 17-33%。
查看缓存全文
缓存时间: 2026/06/27 15:54
Linux 7.2 提升匿名/未命名管道性能:Shell 管道等场景受益
来源:https://www.phoronix.com/news/Linux-72-Faster-Anon-Pipe-Write
LINUX 内核
正在开发中的 Linux 7.2(https://www.phoronix.com/search/Linux+7.2)内核又合并了一项性能优化,用于提升 anon_pipe_write 的速度。该内核函数负责将数据写入匿名/未命名管道,例如在使用 Shell 管道或应用程序的标准流时。
Meta 的 Breno Leitao 在分析其缓存代码时发现,热路径中存在管道互斥锁(mutex)的争用问题。最新合并的代码通过在锁外部预分配资源来避免争用,现已解决该问题。
在 VFS misc 拉取请求(https://lore.kernel.org/lkml/20260612-vfs-misc-v72-13d57389d260@brauner/)中,该情况描述如下:
“anon_pipe_write() 在持有 pipe->mutex 锁的情况下,每页调用一次 alloc_page()。该分配操作可能因直接内存回收而休眠,并运行 memcg 计费,这会延长临界区,导致同一互斥锁上的任何并发读取者被阻塞。现在,在获取锁之前最多预分配 8 个页面,未使用的部分在释放锁前回收到每个管道的 tmp_page[] 缓存中,剩余部分在释放锁后释放,从而让分配器远离临界区的两端。在写入者与读取者的扫描测试中(使用 64KB 写入与 1MB 管道),吞吐量提升 6-28%,平均写入延迟降低 5-22%;在内存压力下——即持有互斥锁进行内存回收的开销最大时——吞吐量提升 21-48%,延迟降低 17-33%。该微基准测试已添加到 selftests 中。”
性能提升非常显著。更多详细数据可通过 Breno Leitao 的补丁封面信(https://lore.kernel.org/all/[email protected]/)查看。
Linux 7.2 匿名管道性能
该优化现已合并到 Linux 7.2 中。
相似文章
Linux 7.1
Linux kernel 7.1 已在内核邮件列表上宣布,标志着新主版本发布,预计将带来功能更新和改进。
Linux游戏性能提升,因为Windows API正成为Linux内核功能
随着Windows特定的同步API通过NTSYNC驱动直接实现在Linux内核中,Linux游戏性能得以提升。该驱动现已默认加载于Steam Deck上,有助于提高游戏兼容性和速度。
利用Linux进程进行高性能网络仿真(2022)
本文介绍了Phantom,一个借用Linux进程在高效离散事件网络仿真器中运行未经修改的应用程序的工具,展示了相较于Shadow和NS-3等现有工具的显著速度提升。
交换表、闪存友好的交换、swap_ops 等
本文介绍了 Linux 内核交换子系统的最新改进和未来计划,包括减少每页开销、基于 folio 的辅助函数,以及使交换更适配固态存储的努力。相关内容在 2026 年 Linux 存储、文件系统、内存管理与 BPF 峰会上进行了讨论。
WSL 2 正在提升 Windows 文件系统访问速度
WSL 2 迎来一项性能改进:每个 virtio 设备将获得独立的 DMA(SWIOTLB)内存池,从而消除了 virtiofs 路径上的资源竞争,提升 Windows 与 Linux 之间跨系统文件访问的效率。此项更改已于 2026 年 5 月合并,是 WSL 2 持续优化 Windows/Linux 文件 I/O 性能系列改进中的最新进展。