Linux 7.2 改进匿名/未命名管道性能,提升Shell管道及其他

Lobsters Hottest 新闻

摘要

Linux 7.2 内核合并了一项针对匿名/未命名管道的性能优化,通过在互斥锁外部预分配页面来避免竞争,使吞吐量提升 6-48%,延迟降低 17-33%。

<p><a href="https://lobste.rs/s/ciwbiq/linux_7_2_improves_anonymous_unnamed_pipe">评论</a></p>
查看原文
查看缓存全文

缓存时间: 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

Hacker News Top

Linux kernel 7.1 已在内核邮件列表上宣布,标志着新主版本发布,预计将带来功能更新和改进。

利用Linux进程进行高性能网络仿真(2022)

Hacker News Top

本文介绍了Phantom,一个借用Linux进程在高效离散事件网络仿真器中运行未经修改的应用程序的工具,展示了相较于Shadow和NS-3等现有工具的显著速度提升。

交换表、闪存友好的交换、swap_ops 等

Hacker News Top

本文介绍了 Linux 内核交换子系统的最新改进和未来计划,包括减少每页开销、基于 folio 的辅助函数,以及使交换更适配固态存储的努力。相关内容在 2026 年 Linux 存储、文件系统、内存管理与 BPF 峰会上进行了讨论。

WSL 2 正在提升 Windows 文件系统访问速度

Hacker News Top

WSL 2 迎来一项性能改进:每个 virtio 设备将获得独立的 DMA(SWIOTLB)内存池,从而消除了 virtiofs 路径上的资源竞争,提升 Windows 与 Linux 之间跨系统文件访问的效率。此项更改已于 2026 年 5 月合并,是 WSL 2 持续优化 Windows/Linux 文件 I/O 性能系列改进中的最新进展。