连 Linux 之父都开始让 AI 写内核补丁了。10 月 10 日,Linus Torvalds 在内核邮件列表里公布了一个 8 补丁的实验系列,目标是一个困扰开发者两年多的性能瓶颈。引人注目的不只是近三倍的提速数字,更是他在说明里写清楚的一句话:这批代码、测试程序、评审工作,连说明文字的初稿,都是 Anthropic 的 Claude Code 在他的指导下完成的。
要解决的是什么问题
Linux 会把最近用过的文件数据放在内存里,这块区域叫页缓存。当多个线程反复从同一个缓存文件里读很小的数据块时,每次读取都要更新内存页的引用计数——“这个页还有几个读者”。这些更新都落在处理器缓存的同一个位置,多核 CPU 的核心们就得为它排队抢,慢得非常明显。
Torvalds 在自己的笔记本上测了一组数据:8 个线程反复读同一个页面的 16 个字节,一个共享缓存行占到了跨核心流量的 99.92%。也就是说,几乎所有的核间争抢都来自这一个计数器。这个问题 2024 年就被指出来了,之前的几次修复尝试都没成。
AI 给出的解法是什么
补丁的思路是“晚一点回收”。内核不再在内存页脱离页缓存后立刻重用它,而是等一个叫 RCU 宽限期的安全窗口过去。这样一来,读操作可以直接把数据拷进程序的缓冲区,完全不用先去拿引用计数;代价是内存会晚一点才被回收。用一点回收延迟,换掉那个最拥堵的共享计数器。
实测数字很亮眼,但要放在具体条件下看:在 Torvalds 的 4 核 8 线程笔记本(Intel i7-8565U,ext4 文件系统,部分内核安全缓解措施关闭)上,8 线程 16 字节读取的吞吐从约 1000 万次/秒提升到 3000 万到 3300 万次/秒;每次读取消耗的内核周期从约 2950 降到约 725。单线程的提升则小得多。Torvalds 自己也提醒:核心更多或多路服务器上的收益理论上会更大,但还没测过;缺页(要读的数据不在缓存里)时补丁还会带来额外开销。这不是“Linux 整体快三倍”,而是特定负载快三倍。
现在进展到哪一步
这 8 个补丁目前只存在于一个实验分支(分支名里就写着 with-llm),还没有合入主线内核。而且评审已经挑出了毛病:有评审者发现了一处竞态条件——两个并发操作可能以意外的顺序互相干扰,以及内存回收方面的顾虑。Torvalds 已经把后续开发交给了内核开发者 Kiryl Shutsemau,他之前也研究过同一个瓶颈。
比数字更重要的是 Torvalds 划的两条线
第一条线是关于人的责任。Torvalds 反复强调:人必须指导工具、评审输出、理解自己提交的代码。如果 AI 辅助的贡献带着一个隐蔽 bug 通过了评审,责任完全在签名提交的那个人。这次评审发现的竞态条件,恰好成了这句话的注脚——AI 写得快,但评审不能快。
第二条线是关于披露。他要求用这类工具参与内核贡献必须明确披露,比如打上 Co-developed-by 这样的标记,让其他开发者知道代码的来历,在评审时用相应的 scrutiny 去看。
对普通开发者来说,这件事的信号很清楚:AI 编程已经走到了连操作系统内核这种最保守的阵地,Torvalds 本人都在用。但“能用”和“能合入”是两回事——在内核这样的地方,AI 的产出照样要过最严的人类评审这一关。工具变了,规矩没变,反而更严了。
此處評論已關閉