Linus Torvalds用Claude Code修复Linux内核缓存瓶颈

Linus Torvalds发布由Claude Code协助编写的内核补丁。该修复解决多核场景下页面缓存争用瓶颈,特定测试中八线程吞吐量提升近三倍,内核周期数大幅降低。

核心要点

  • Linus Torvalds 发布了一套 Linux 内核补丁,其中大部分代码由 Anthropic 的 Claude Code 编写。
  • 该补丁旨在解决多内核、多处理器场景下内存缓存争用导致的性能瓶颈问题。
  • Torvalds 对人工智能的态度已从怀疑转变为将其视为程序员和维护者的实用工具。

Linux 创始人 Linus Torvalds 近期在 Git 提交中披露,其最新发布的内核补丁系列中的代码、测试程序以及审查材料,均是在其指导下与 LLM 编码助手(Claude Code)协作完成的。这一举动标志着 Torvalds 对 AI 辅助编程态度的显著转变,从早期的怀疑论者逐渐转向将 AI 视为提升开发效率的有力工具。

八线程吞吐量提升至3000万次每秒

攻克共享内存瓶颈:页面缓存争议修复

此次补丁的核心目标是解决 Linux 页面缓存中的长期争议。页面缓存负责存储文件数据,当多个线程频繁读取同一缓存文件中的少量数据时,它们需要获取并释放支持该数据的文件引用。这些引用计数的更新涉及对共享缓存行的原子写入操作,进而迫使处理器核心之间产生激烈的资源争夺。

尽管这听起来并非严重问题,但在特定工作负载下影响巨大。Torvalds 在一台配备四核八线程 Intel Core i7-8565U 处理器的笔记本电脑上进行测试时发现,当八个线程对同一个页面发出 16 字节的 pread() 调用时,根据“命中修改缓存行”(HITMs)的数据统计,跨核心的共享缓存线负载占比高达 99.92%,导致系统性能显著下降。

值得注意的是,这一问题自 2024 年以来已被社区知晓,但此前的尝试性修复并未奏效。Torvalds 与 Claude Code 提出的新方案改变了内核重新使用从页面缓存中删除内存的逻辑:不再立即将内存返还给分配器,而是推迟重用,直到读复制更新(RCU)宽限期结束。这使得受 RCU 读侧保护的阅读器可以直接将数据复制到用户缓冲区,而无需反复更新叶片引用计数。

基准测试显示,在该特定场景下性能提升明显:八线程吞吐量从约 990 万至 1040 万次读取/秒提升至 3000 万至 3300 万次;每次读取的内核周期数从约 2,950 降至 725。单线程读取的改善相对温和,周期数从约 452–454 降至 408–409。Torvalds 在 Pull Request 中指出,拥有更多 CPU 或多插槽的机器理论上应能获得更大收益,但目前尚未进行大规模测量。

需澄清的是,这并不意味着 Linux 整体运行速度提升了三倍,上述数据仅针对 Torvalds 个人笔记本上的特定小读量工作负载实验结果。

权衡与遗留问题:内存回收延迟

这种优化方案以牺牲即时内存回收为代价,换取了读取路径的高效性。延迟内存重用意味着页面在内核等待 RCU 宽限期期间保持不可用状态。Torvalds 在提交信息中将由此引发的回收问题描述为“该系列中最未解决的部分”。

此外,当读取尚未映射的用户页面时,新路径会出现回归现象,即在回退到现有实现之前触发异常。截至 10 月 13 日,该分支仍处于主线 Linux 7.3-rc6 之外。该补丁最终是否会被合并,以及具体的时间表,目前尚不确定。

从怀疑到实践:Torvalds 的 AI 态度演变

Torvalds 采用 Claude Code 编写内核代码的决定,反映了他对人工智能看法的渐进式变化。这并非简单的立场反转,而是一个基于实际效用评估的过程。

早在 2023 年 12 月,Torvalds 曾将 AI 描述为对开发人员潜在的帮助工具,但他当时的兴趣主要集中在利用 AI 识别错误,而非编写代码。他当时认为,没有人会认真考虑使用 AI 来编写严谨的程序。

到了 2025 年底,Torvalds 自称是“人工智能作为一种工具的坚定信徒”,其关注点不再局限于发现错误。尽管对于 Linux 内核而言,完全由 AI 创建新的、严谨的代码仍被视为不切实际,但在 2026 年 1 月,他开始在一个 Python 音频可视化器的爱好项目中尝试 AI 辅助编码。

在 10 月 23 日布拉格举行的欧洲开源峰会上,Torvalds 在与 Dirk Hohndel 对话后表示:“我以前认为它不太好,但现在我真的很喜欢使用 AI。”他认为,如果正确使用,AI 是一个很好的工具。但他同时警告:“当你从事真实且重要的工作时,你需要非常小心地使用人工智能。”

此次页面缓存实验体现了 Torvalds 观点的两面性:Claude Code 协助生成了内核代码、测试及审查材料,产出的分支显示出有希望的基准性能收益,但也暴露出未解决的内存恢复问题和性能回归。这些问题必须在实验成果转化为生产环境内核代码之前得到妥善解决。

评论 0

0/500

评论需审核后展示,请文明发言

💬
还没有评论,来说两句

相关阅读