从怒斥到真香定律,Linus现用Claude Code改内核 :性能暴涨23倍,结果被维护者发现Bug……

dbaplus社群 · 软件开发

原创 整理自 2026-11-06 07:15 广东 人对代码质量的把控,始终是最后一道防线。 Linux 创始人、长期担任首席维护者的 Linus Torvalds 借助 Anthropic 的 Claude Code 改内核。 10 月 13 日,他提交了一组 10 个补丁的合集。在他的 Ryzen Threadripper 上运行的合成基准测试中,这组补丁将 吞吐量提升了 23 倍 。但补丁还没正式合入主线, 社区维护者就揪出了一个连 Linus 和 AI 都没发现的 Bug。 大神都有兜不住的Bug?这要从一个困扰了开发者们两年多的性能问题说起。 一、一个两年无解的内核瓶颈 2024 年,Oracle 工程师、资深 Linux 内核内存管理开发者 Matthew Wilcox 在处理客户工作负载时,发现了页缓存的 folio 引用计数争用问题,并标记下来。 根据 Hardware Busters 的测试数据,在 Linus 的 Core i7-8565U 笔记本上的 8 线程测试中, folio 引用计数争用占到了跨核 HITM 开销的 99.92%。 之前,为了解决页缓存引用计数的性能瓶颈,Linus 自己写过一版修复方案,断断续续用了 18 个月,但这个版本一直存在缺陷。其他开发者也尝试过不同的优化思路,同样没能彻底解决问题。 二、Linus 亲自承认用 AI 写内核代码 针对这个久攻未决的瓶颈,Linus 拿出了新的优化方案。令人震惊的是,该方案竟然是 Linus 借助 AI 完成的。 10 月 11日,Phoronix 的 Michael Larabel 发现,Linus 的内核代码树中出现了一个名为 noref-filemap-read-with-llm 的新分支。 熟悉 Linus 开发习惯的人都知道,他的代码树极少收录主线开发分支之外的内容。 这个包含 8 个补丁的版本基于 Linux 7.3-rc6 开发,提交记录里清晰说明了 Claude Code 的具体分工。 在补丁信息中,Linus 确认了 AI 的参与: “上述代码、测试程序、审查工作以及本文初稿都是在我的指导下,由一位 LLM 编码助理(Claude Code)完成的。基准测试都是在我的机器上运行的。” 这与 Linus 此前的公开立场形成了鲜明对比。他曾将 AI 描述为“90% 是营销”,也曾批评开发者“用 AI 写了 99% 的代码”。而现在, 他不仅在内核之外用 Google 的 Antigravity 进行了一些虚拟编程, 还用 AI 辅助内核调试。 三、性能提升23倍,但也有代价 让业内意外的不只是 Linus 用上了 AI,更是他提交的这组补丁走了一条更大胆的技术路线。 早前有人尝试过的思路是:读取拷贝时不持有 folio 引用,读完再校验数据有效性,但该方案在内存回收、页替换场景下存在竞态条件。 而 13 日 Linus 推出的 10 补丁 rcu-free-v3 系列,是新增 PG_rcu_free 标志位,采用 RCU 延迟回收机制,只要用户态数据拷贝过程不触发缺页异常,就能在整个读取周期内安全访问 folio 结构。 根据 Threadripper 基准测试结果,两个版本的性能提升非常显著: 最初的 8 补丁版本在 Linus 的笔记本上就已经翻了 近三倍的吞吐量 :8 线程场景下,每秒读取次数从 1000 万提升至 3300 万,单次读取消耗的内核周期数从约 2950 降至 725。 而优化后的 10 补丁版本,在 64 线程 Threadripper 的高并发争用场景下提升更夸张:吞吐量从每秒 1330 万次读取跃升至 3.04 亿次,单次读取的内核周期数从近 2 万降至 735,也就是 23 倍的性能提升 。 但 Linus 也明确提醒, 在实际工作负载中,基准测试的性能涨幅会小很多。 这是极端合成基准的结果,不代表 Linux 整体性能提升。 而性能提升也并非没有代价。 据 Hardware Busters 报道,在 8 补丁最初实现版本中,只要单个 CPU 的待回收页面队列 超过 1024 个 ,延迟回收机制就会触发强制快速宽限期,加急完成页面回收。 此外,针对未映射的用户页读取操作,在回退到原有流程前会额外触发一次缺页异常,导致单线程下 16 字节读取的周期数 从约 4150 攀升至 6550 。 目前这一性能回退问题在 rcu-free-v3 版本中是否已修复,还没有明确结论。 四、维护者质疑,大神也有没兜住的Bug? 针对 Linus 的方案,最早发现该内核瓶颈的Matthew Wilcox 对新增的 PG_rcu_free 标志位提出异议,建议改用页面类型标识,同时配合在 RCU 宽限期后回收非活跃链表中

查看原文