21CTO 导读:今天说的这件事情,可能是开发者与人工智能以及 Linux 之间关系的一个转折点。
Linus Torvalds(林纳斯·托瓦兹)的新代码由八个补丁组成,发布在 Torvalds 代码库的 noref-filemap-read-with-llm 分支上。这些补丁旨在消除多个线程从同一文件读取小数据时出现的瓶颈。
具体来说,此次修复解决了 Linux 页面缓存中的争用问题,该缓存用于在内存中保存文件数据。当多个线程反复从同一个缓存文件中读取少量数据时,它们会获取并释放对支持该数据的页面的引用。这些引用计数更新需要对共享缓存行进行原子写入。这反过来又迫使处理器核心争用该缓存行。
听起来好像不是什么大问题,对吧?错了。在某些工作负载下,这会严重拖慢速度。聪明的Torvalds 发现,在一台四核八线程的 Intel Core i7-8565U 笔记本电脑上,当八个线程对同一页面发出 16 字节的 pread() 调用时,根据“修改缓存行命中率 (HITMs)”的数据,共享缓存行占用了 99.92% 的跨核负载。这会显著降低工作效率。
这并非 Linus 个人为了满足私欲而做的。这个问题最早可以追溯到 2024 年,当时 Matthew Wilcox 指出了这个问题,并提到了客户的工作负载。然而此前的修复尝试均以失败告终。
Torvalds 亲自完成了测量工作,然后命令 Claude Code 提交的补丁改变了内核何时可以重用从页面缓存中移除的内存。这些补丁并非立即将内存返回给分配器,而是延迟重用,直到读取-复制-更新 (RCU) 宽限期结束。这使得受 RCU 读取端节保护的读取器可以直接将数据复制到用户缓冲区,而无需获取页码引用。
这种方法牺牲了即时内存回收,换取了一种避免重复更新共享引用计数器的读取路径。在特定的测试场景中,性能提升非常显著。八线程吞吐量从每秒约 990 万至 1040 万次读取提升至每秒 3000 万至 3300 万次读取,而每次读取所需的内核周期数则从约 2950 个降至 725 个。单线程读取的提升幅度较小,每次读取所需的内核周期数从约 452 至 454 个降至 408 至 409 个。
Torvalds 在他的拉取请求 (PR) 中补充道:“拥有更多 CPU 或多个插槽的机器应该能获得更大的提升;目前尚未测量到更大规模的机器。”
这并不意味着 Linux 整体运行速度快三倍。当然不是!这只是在 Torvald 的个人笔记本电脑上,针对特定的小读取工作负载进行的实验结果。他带着这台笔记本电脑在布拉格参加Linux Plumbers大会。
这并不是说 Torvalds 和 Claude Code 已经解决了这个问题——人们离解决这个问题还很远。
性能的提升是以工程上的权衡为代价的,延迟内存重用意味着在内核等待 RCU 宽限期期间,页面可能仍然不可用。Torvalds 在他的 Git 提交中将这个内存回收问题描述为“本系列中最难解决的部分”。
当读取操作指向尚未映射的用户页面时,也会出现回归问题。新路径会抛出一个额外的失败异常,然后才会回退到现有实现。截至 10 月 13 日,该分支仍未合并到 Linux 7.3-rc6 主线中。它最终是否会被合并,以及合并的具体时间表,目前还尚无定论。
2023年12月,他将人工智能描述为开发者的潜在助手。他表示说:“我认为人工智能是一种可以帮助我们更好地完成工作的工具。”当时,他对人工智能的兴趣在于它如何帮助识别漏洞,而不是编写代码。那时没有人认真考虑过使用人工智能来编写复杂的程序(现在真很难想象)。
2024 年,他曾称人工智能行业“ 90% 是营销,10% 是现实”。
到2025年末,Torvalds称自己“非常相信人工智能作为一种工具的价值”,并表示他更感兴趣的不仅是查找漏洞,还有维护代码和审查补丁。但是,为Linux编写新的、严肃的代码仍然基本不在他的考虑范围之内。不过,在2026年1月,他开始在一个业余项目中尝试使用人工智能辅助编码,开发一个Python音频可视化工具。
他在 10 月 9 日于布拉格举行的欧洲开源峰会上与他的老朋友、爱立信软件技术主管 Dirk Hohndel 交谈后发表了最新言论,语气更加充满热情。
“我以前觉得人工智能不太好用——但现在我真的很喜欢用它,”Torvalds说。“我认为,如果你正确使用它,并把它当作工具来对待,人工智能就是一个很棒的工具,而且我发现它让编程变得更有趣了。”
即便如此,他还是告诫大家说:“我认为,在做真正重要的事情时,使用人工智能需要非常谨慎。”
然而,Linux恰恰是最不真实、最不重要的项目之一么?
页面缓存实验充分展现了他立场的正反两面。Claude Code参与了Linux内核代码、测试和审查材料的编写。由此产生的分支在基准测试中展现出令人鼓舞的提升,但也存在一些尚未解决的内存回收问题和性能退化,这些问题必须在实验成果转化为生产内核代码之前得到解决。
然而,我们已经迎来了一个转折点。
虽然人工智能的影响力在日益增强,但Linux Torvalds仍然认为Linux以及其它软件的成功源于稳步渐进的开发,而非大刀阔斧的变革。
“我坚信,随着时间的推移,这些小的改进最终会演变成重要的功能,”他说开发人员的目标始终是“持续改进,稳步前进”。
作者:洛逸
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。