Long-form

Linus 的第一个 LLM 辅助补丁系列:RCU 优化与人机协作的真实边界

6 min read ·

💡 事实来源:LWN.net 2026-10-14 报道(作者 Jonathan Corbet),补丁系列与评审邮件均有公开链接。本文技术细节以 LWN 原文与公开邮件为准。

10 月 14 日,LWN 的 Jonathan Corbet 发了一篇短消息,分量却不短:Linus Torvalds 发出了他第一个由 LLM 辅助完成的补丁系列。背景是他几天前在 Maintainers Summit 上提到,自己正在用大语言模型处理一个搁置已久的问题。现在补丁真的发到了邮件列表,共十个,等待评审。

这件事值得认真对待,不是因为它有话题性,而是因为它是目前最罕见的样本:一个以严苛著称、对 AI 代码态度谨慎的社区里,最高权威的维护者第一次公开把 LLM 纳入自己的工作流。本文拆开三层来看:补丁本身做了什么、这件事对内核社区意味着什么、对所有用 LLM 写代码的团队有什么可迁移的结论。

一、补丁做了什么:一次教科书级的快速路径优化

十个补丁解决的是内核里一个存在已久的性能瓶颈:folio 查找。

先补一点背景。folio 是内核中管理页缓存的核心数据结构,把原本单页的 page 结构组合成更大粒度的单位。系统每一次读文件,都要经历「查找 folio、访问 folio 数据」的过程,这是 read 路径上最热的代码之一。

内核的做法一直在演进。查找本身早已放在 RCU 保护下——读者可以无锁查找,不需要拿任何锁。但访问 folio 里的数据仍是另一回事:为了防止数据在你读取时被回收复用,读者必须拿引用计数(refcount),读完再还。引用计数本身是原子操作,在高并发读的机器上,这些原子操作会在缓存行上产生真实争用——每个核都在改同一个计数器,缓存一致性协议把代价放大到整个插槽。

Linus 的补丁系列改的是这个结构。用他自己的描述:当发现一个 folio 是「热」的,就设置一个标记,延迟一个 RCU 宽限期再释放它。这样一来,不仅查找在 RCU 保护下,数据访问本身也可以放进 RCU 区间——只要用户态拷贝不触发缺页,读者可以从头到尾不碰引用计数。

效果:在一个 read 密集的基准测试上,量级(order-of-magnitude)加速。

这类优化的味道很正:不改数据结构、不改接口,只调整生命周期的时序,把「安全」的代价从每读者一次转移成每宽限期一次。它利用的是 RCU 社区打磨了二十年的语义,而创新点只在一个朴素的观察上——热数据大概率会在宽限期内被再次读到,为它多留一个宽限期是划算的。十个补丁的粒度也值得学:变更被切得很细,每一步都可独立理解、独立回滚,这是邮件列表文化的标准动作,LLM 辅助并没有让它变粗糙。

二、评审立刻发现竞态:流程的价值恰恰在这里

补丁发出后,评审进展很快——快到不舒服的程度。评审者已经在代码里发现了一处竞态条件,系列需要返工。

注意这件事的两面。反面:LLM 辅助产出的代码不是免检的,在内核这种正确性要求最高的场景里,并发时序问题依然是最容易漏的类别——竞态不会在代码评审的静态阅读里完全暴露,它需要评审者真正去推演「两个 CPU 在这条路径上交错执行会怎样」。Linus 的描述再流畅,时序正确性只能靠推演。

正面:这个问题被公开的、有记录的评审流程抓住了。邮件列表上的每一轮往返都有存档,竞态的发现过程、修复方案、讨论理由全部留痕。对比很多团队「AI 生成的代码直接合并进主干」的现状,内核社区展示的是另一条路径:产出的来源不重要,验收的流程不能松。

这是本事件里最值得放大的一课。围绕 AI 代码的争论经常聚焦在「该不该用」上,而内核社区给出了更成熟的答案:用,但评审带宽要匹配产出带宽。LLM 把生成成本打到接近零,如果评审还是原来的带宽,积压的不是工作量,是风险。

三、为什么是 Linus、为什么是现在

Maintainers Summit 上的表态值得回看。内核社区过去两年对 AI 代码的态度一直偏冷:此前社区层面有过明确讨论,担心 AI 生成代码的来源污染与责任归属,一些维护者明确拒绝接受可能含 AI 生成内容的贡献。这套立场的合理性在于内核的特殊性:代码要在亿万设备上跑十几年,出错的代价不可逆。

而 Linus 本人的示范提供了另一种可能:不是「接受 AI 代码」,而是「权威维护者用 LLM 放大自己」。这里有一个微妙但关键的区别——责任链是完整的。补丁署名是 Linus 本人,他在邮件里的描述口径是「我」在工作,「我」对每一行负责。LLM 是他的工具,不是他的合作者,更不是替罪羊。

这也解释了为什么是他第一个迈过这条线。社区的信任模型是围绕个人建立的:新人提交的代码要多轮评审,是因为信任不足;而核心维护者的代码走快速路径,是因为信任积累了几十年。当 Linus 说「这系列是我做的,LLM 帮了我」时,社区评审的注意力仍然在代码上——信任锚没有移动。

对比一下很多公司内部的处境:AI 生成的代码由谁署名?出了事故找谁?如果答案是「没人」,那不是工具问题,是责任模型缺失。内核社区几十年的署名链(Signed-off-by 体系)恰恰是现成的答案。

四、可迁移的结论:给所有用 LLM 写代码的团队

把这件事从内核语境里抽出来,有三条结论对所有团队成立。

第一,让 LLM 啃「重要但排不上队」的问题。 Linus 选的不是一个新功能,而是一个存在已久的性能瓶颈——这类问题的特点是:价值明确、无人认领、需要大量连续思考时间。LLM 最大的杠杆不是帮你写你本来就会写的东西,而是让你能负担起那些「一直想做但没时间做」的事。每个代码库里都有一批这样的问题。

第二,产出带宽翻倍时,评审带宽必须同步扩容。 这是把 LLM 引入开发流程后最容易漏的配套投资。生成端提速十倍、评审端不变,结果不是效率提升十倍,而是风险积压十倍。内核社区的答案是把评审做成公开存档的仪式,普通团队至少要做到:AI 参与的代码有明确标记、评审者知道生成来源、并发与时序类代码强制人工推演。

第三,责任模型先于使用政策。 很多团队在讨论「允许用哪些 AI 工具」,这个问题其实在次序上就错了。先回答「AI 参与的代码谁署名、谁负责、出了事找谁」,使用政策自然就出来了。Linus 的示范里最重要的不是他用了 LLM,而是署名是他自己——责任链没有因为工具变化而断裂。

五、后续值得盯的点

这个系列接下来的走向本身就是观察样本:竞态如何修复、评审往返几轮、最终合并版本与初稿差多少。如果 LLM 参与的修改量在返工中占比可观,那就说明「人机协作」的真实形态是迭代打磨而非一次成型;如果只改几行,则说明顶级维护者的提示词工程已经把问题收敛得很好。

另一个值得盯的是示范效应。内核社区里排在 Linus 之后的维护者们会不会跟进、子系统的维护者 Summit 会不会形成新的 AI 使用惯例、contribution 文档会不会更新对 AI 生成内容的条款——这些决定会比任何一篇评论文章更真实地划定 LLM 在基础软件中的边界。

十年前有人说内核开发是「地球上最大规模的协作实验」。现在这个实验多了一个新变量:LLM 进入了最核心的提交权限持有者的工具箱。实验还在继续,而这一次,全程有邮件列表存档可查。

Frequently asked questions

这个补丁系列具体优化了什么?
优化 folio 查找的快速路径。内核早已把 folio 查找本身放在 RCU 保护下,但访问 folio 里的数据仍需拿引用计数。新系列让「热」folio 延迟一个 RCU 宽限期再释放,从而把数据访问也放进 RCU 区间——只要用户态拷贝不缺页,快速路径可以完全不碰引用计数,read 密集负载获得量级加速。
LLM 在其中扮演了什么角色?
按 Linus 在 Maintainers Summit 的说法和他本人的描述,LLM 被用来处理这个他拖了很久的问题。补丁以 Linus 本人名义发出,说明他对结果负责。LLM 的确切贡献边界没有披露——是生成初稿、探索方案还是迭代打磨,社区只能推测。这也是这件事值得玩味的地方。
发现的竞态条件说明了什么?
说明评审层没有被绕过。补丁发到邮件列表后,评审者很快指出一处竞态条件,系列需要返工。这恰好演示了内核开发流程的设计意图:任何来源的代码——无论出自资深维护者、新手还是 LLM——都要经过同样严格的公开评审。LLM 提高了产出速度,但没有降低验收标准。
RCU 延迟释放是什么技术?
RCU(Read-Copy-Update)是内核的同步机制,读者可以无锁访问共享数据。延迟释放指对象从共享结构移除后,不立刻回收内存,而是等所有可能的读者离开临界区(一个宽限期)再释放。新补丁把热 folio 的释放推迟一个 RCU 宽限期,读者因此可以在 RCU 区间内安全读取数据而无需持引用。
对普通开发者团队有什么启示?
三点:一是让 LLM 处理「重要但一直排不上优先级」的老问题,价值回报可能很高;二是产出速度提升后,评审带宽成为新瓶颈,评审机制必须同步加强;三是公开的、有记录的评审过程是人机协作质量的护栏——比任何内部使用守则都有效。
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.