Linux 内核补丁进入主线前要过维护者这关,而提交信息里出现 AI 工具署名,在这个代码基上是头一遭。10 月 11 日,Phoronix 的 Michael Larabel 在等 Linux 7.3-rc7 的功夫发现:Torvalds 自己的仓库里多了一个叫 noref-filemap-read-with-llm 的分支——那棵树平常只躺一个 master,分支名直接带 llm,藏的是一条八补丁系列。10 月 14 日 LWN 撰文跟进,封面信的 Tools 一节写明了来历:代码、测试程序、问题清单背后的审查、乃至信件初稿,均由 Claude Code 在 Torvalds 亲自指导下完成,基准数字跑在他自己的机器上。

这不是「AI 替人写内核」的戏码,分工写在明处:人定方向、审清单、担署名,智能体出草案与苦力活。真正值得拆的是补丁本身——它碰的是 Linux 内存管理一个挂了很久的瓶颈,而解法恰好示范了人机协作里最舒服的那种姿势:苦活杂活交给工具,判断留给人。

一根缓存线,八个核在抢老路径:每次读都动引用计数多线程读同一缓存文件取放folio引用各写一次同一缓存线在核间弹来弹去新路径:RCU 宽限期兜底读侧直接拷数据进用户态folio 离开缓存也不急着还宽限期后才交回分配器为什么以前不敢这么干免引用拷贝怕内存被提前回收老设计拷贝后再校验校验看不见「同槽位重插」这一版怎么兜延迟释放从根上消掉竞态异常条件回退老路径页故障在读侧临界区内禁用补丁共 8 个,基于 7.3-rc6,躺在 torvalds 仓库的 noref-filemap-read-with-llm 分支,未合入主线
图|左老右新两条读路径,下排是这次敢免引用的理由。读图要点:争抢的度量来自 Torvalds 自己那台四核笔记本。

一根缓存线,八个核在抢

问题 2024 年就有人提出:多个线程反复读同一个缓存文件的小片段时,每次读都要给背后的 folio(一组一起管理的内存页)取放一次引用,两次原子写都砸在同一根缓存行上——核与核之间开始抢这条线。Torvalds 那台四核八线程的 Core i7-8565U 上,这根线吃掉了 99.92% 的跨核负载未命中。以前的免引用设计不是没人想过,难在拷贝完成后校验看不见「页被释放又在同一槽位重插」这类竞态。

这一版换了个路子:不检测竞态,直接消掉。folio 离开页面缓存后不立即交还分配器,等一个 RCU 宽限期;读侧在临界区内直接往用户态拷数据,不取引用、不设中转缓冲。缺页、数据不全、用户缓冲故障等异常条件,一律回退老路径。

数字漂亮,账没算完吞吐约 3 倍单读周期 2950→725争抢 30538→101单线程仅省约 10%回归:4150→6550 周期未合入主线测试口径:四核八线程笔记本、16 字节预读、八线程打同一页;缓解措施与HARDENED_USERCOPY 关掉后跑的——换到多路服务器上,收益理应更大,但没人测过Torvalds 自己标注:延迟释放的内存会计是全系列「解决得最差」的部分署名位置:封面信的 Tools 一节写明——代码、测试程序、问题清单背后的审查、信件初稿均由 Claude Code 在其指导下完成;基准数字跑在他自己的机器上同周末他还用 LLM 清理 assoc_array,翻出三个 2013 年首提交起就藏着的 Bug
图|上排六枚 chip 是读数与未结项,中部是测试口径,底部是署名事实。读图要点:这是「人主导、智能体干活」的样板,不是自主工程。

数字与未结的账

读数很扎眼:八线程对同一页发 16 字节预读,吞吐从每秒约 990 万到 1040 万次涨到 3000 万到 3300 万次;单次读取的内核周期从 2937 到 2975 降到 725 到 726;跨核争抢指标从 30538 掉到 101。单线程只省一成上下(452 到 454 周期降到 408 到 409),Torvalds 自己预期多路服务器上收益更大——但没人测过。

账没算平的地方他也标了:延迟释放的内存会计是全系列「解决得最差」的部分,等宽限期的页对分配器不可见,可能诱发提前 OOM(六补丁版本在 2GiB 虚拟机压力测试里 4 核与 8 核上就触发过杀手;完整版加了「单 CPU 排队超 1024 页就强制加速宽限期」的阀门才算跑完)。另有一处回归:读尚未映射的用户页会先吃一次失败异常再走老路,16 字节单线程读从约 4150 周期涨到约 6550。测试还关了缓解措施与 HARDENED_USERCOPY。系列基于 7.3-rc6,未合入,瞄准 7.4 合并窗口——能否进主线,看内存管理维护者与多核服务器上的复测。

放进台谱里看

站点追 Claude Code 这条产品线有日子了,从 1903 的 2.1.299(空闲压缩、插件化)到各类编码智能体横评。本篇的分量不在版本号,在署名位置:内核社区吵了一年「AI 生成补丁算不算贡献」,Torvalds 用一次实操给出了可参照的中间路线——工具可以用,苦力可以交,方向、审查与担子留在人。他 7 月在邮件列表就表过态:Linux 不是那种反 AI 的项目,AI 是工具,和其他工具一样,而且明显有用。同周末他还用 LLM 清理 assoc_array 库,顺手翻出三个 2013 年首提交起就藏着的 Bug。

几盆该浇的冷水

全部数字来自一台关了缓解措施的四核笔记本,「约 3 倍」换到 64 核服务器上可能是另一个数,方向大概率不变,幅度无人背书。内存会计未结、回归存在、未合入——把它读成「Linux 已经 AI 化」是过度演绎,准确的读法是「最难伺候的代码基,开始给智能体发试用期工牌」。另一盆冷水留给看热闹的厂商:这是「人主导、智能体执行」的样板间,不是自主工程的样板间,拿它佐证「AI 能独立写系统软件」会翻车。

给维护者团队一条可以直接抄的规矩:学这次封面信的 Tools 一节——用了什么工具、干了哪几段活、哪些结论是人自己核的,写进提交信息。披露做在明处,审查成本不升反降,这是内核社区用三十年磨合出的信任机制,智能体时代照样成立。