编程与软件开发

Linus Torvalds 借助 Claude Code 改进 Linux 内存,但审查发现竞态条件

Claude Code 生成了用于处理 Linux 内核页面缓存瓶颈的补丁,在人工合成场景中将性能提高了最多 23 倍。然而,内核审查人员发现了一处竞态条件,并对内存回收的安全性提出担忧,因此这些改动尚未合并。

2026-10-14
2 分钟阅读
20 浏览量
certi.news Editorial Team
Linus Torvalds 借助 Claude Code 改进 Linux 内存,但审查发现竞态条件

Linux 创始人兼内核开发主管 Linus Torvalds 使用 Anthropic 的 Claude Code 工具,协助处理文件读取路径中一个存在两年多的瓶颈。一系列包含 10 个补丁的改动,在一台配备 64 核 Threadripper 的设备上进行人工合成测试时,将读取速率提高了 23 倍;但 Linux 内核审查人员随后发现了一处竞态条件,并对内存回收设计的安全性提出疑问,这意味着这些补丁尚未合并。

页面内存引用计数器问题

这项工作涉及 page cache 中被称为 folio 的对象引用计数器竞争。page cache 是用于保存从文件读取的数据、以加快后续访问的层。该瓶颈于 2024 年被报告,此前它出现在一名客户的工作负载中;对 Torvalds 笔记本电脑进行的测试显示,在使用 8 个线程的测试中,这种竞争占各内核之间 HITM 操作的 99.92%。

Torvalds 表示,他花了 18 个月运行其此前针对该问题的修复版本,而其他开发者在各自的尝试中也遇到了问题。新补丁旨在从最常用的缓存读取路径中移除 folio 引用的增加和减少操作;Torvalds 同时警告说,与人工合成测试相比,实际工作负载中的收益会小得多。

Advertisement

Claude Code 的作用与结果的局限

Torvalds 的代码树中出现了一个名为 noref-filemap-read-with-llm 的实验分支,随后补丁系列中说明了 Claude Code 所发挥的作用。根据 Torvalds 的说法,该工具编写了实现、测试和初步文档,并在他的指导下审查了代码;而他本人负责亲自运行性能测试。

第一版补丁将其笔记本电脑上的读取速率从约每秒 1,000 万次提高到每秒 3,300 万次,并将每次读取所需的内核周期数从约 2,950 降至 725。修订版补丁则在高负载下将 Threadripper 设备上的性能从每秒 1,330 万次读取提高到每秒 3.04 亿次,同时将每次读取的周期数从约 20,000 降至 735。

为什么性能数据还不够?

性能提升伴随着潜在成本。第一版实现会在 CPU 超过 1,024 个延迟回收页面时强制进行一次等待。此外,读取未关联的用户页面会在返回现有路径之前产生额外错误,使单线程读取 16 字节的成本从约 4,150 个周期升至 6,550 个周期。目前尚不清楚这一退步是否会保留在 rcu-free-v3 版本中。

审查揭示了更重要的风险

Matthew Wilcox 反对使用新的 PG_rcu_free 标志,并提出了一种基于页面类型、采用不同机制回收非活跃 folio 的替代方案。Kiryl Shutsemau 还建议将该标志限定在 64 位系统上,David Hildenbrand 表示支持这一方向。

Shutsemau 还在 filemap_read_rcu_batch() 函数中发现了一处竞态条件:替换 folio 后如果文件大小扩展,可能会暴露实际上尚未写入的数据。Torvalds 建议更早读取文件大小并合并检查操作,这一建议已被纳入修订版补丁。

certi.news 的编辑解读:这一案例表明,人工智能编程工具能够迅速在内核测试中取得显著改进,但无法取代理解并发和内存生命周期的专业审查。这里的纪录性数据证明的是特定环境中的收益,并不意味着可以自动合并,也不保证实现的安全性。

新闻来源
The New Stack - Software Development
查看原始来源 ↗
c
作者

certi.news Editorial Team

你需要知道的

Linus Torvalds 借助 Claude Code 编写了一组补丁,旨在改善 Linux 内核文件读取路径中的瓶颈,并在合成测试中取得了显著性能提升。但内核审阅者发现了一个竞态条件,并对内存回收存在担忧,因此这些补丁尚未合并。

  • Claude Code 生成了一系列包含 10 个补丁的方案,用于处理 page cache 中 folio 引用计数的竞争问题。
  • 据称,在一台配备 64 核 Threadripper 的设备上,合成测试性能提升了 23 倍。
  • Claude Code 在 Torvalds 的指导下编写了实现、测试和初步文档,并审阅了代码;Torvalds 则进行了性能测试。
  • Linux 内核审阅者发现,filemap_read_rcu_batch() 函数中存在竞态条件,可能暴露实际上尚未写入的数据。
  • 这些补丁可能会增加部分读取路径的开销,目前尚不清楚它们是否会保留在 rcu-free-v3 版本中。
  • 这些更改尚未合并,设计的安全性及其在实际工作负载中的性能仍在审查中。

常见问题

Linus Torvalds 使用了什么工具?

他使用了 Anthropic 的 Claude Code,在其指导下协助编写补丁、测试和初步文档,并审阅代码。

据称性能提升了多少?

在一台 Threadripper 设备的合成测试中,该系列补丁将读取速率从每秒 1330 万次提高到每秒 3.04 亿次,约提升 23 倍。

为什么这些补丁尚未合并?

内核审阅者发现了一个竞态条件,并对内存回收设计的安全性表示担忧;此外,部分读取路径可能存在性能开销。

同一分类

你可能还喜欢

查看所有新闻