关于ZAKER Skills GEO服务 合作
星途科讯 1小时前

Meta 工程师重构 Linus AI 补丁,Linux 内核读取性能大幅跃升

Meta 工程师 Kiryl Shutsemau 于 10 月 19 日发布了一份重新修订的 Linux 内核补丁集。该版本基于 Linus Torvalds 此前利用 AI 辅助生成的代码,旨在实现 Linux 在不获取 folio 引用的情况下从页面缓存中读取数据。这份包含 18 个补丁的 " 请求评论 "(RFC)版本,结合了 Torvalds 的 7 个原始补丁与 Shutsemau 新增的 11 个补丁,在针对单个文件进行小规模、多线程读取时展现出显著的性能提升。

从 AI 辅助分支到内核邮件列表

Shutsemau 指出,多个 CPU 对同一文件进行微小读取时,会频繁获取并释放同一个 folio 的引用,导致引用计数在不同 CPU 间剧烈波动。新版补丁的核心机制是:只有经过 RCU 宽限期后,被读者复制数据的 folio 才会被释放。这允许处于 rcu_read_lock ( ) 状态下的读取者在禁用页面错误(page faults)的情况下,直接将数据复制到用户缓冲区。

这项工作起源于 Torvalds 内核树中一个名为 noref-filemap-read-with-llm 的分支。Torvalds 曾在其笔记本电脑上测试发现,当八个线程对一个页面执行 16 字节的 pread ( ) 调用时,绝大部分硬件互斥事务冲突(HITM)都发生在持有 folio 引用计数的行上。这一争用问题此前曾由 Matthew Wilcox 在 2024 年从客户工作负载中指出。Torvalds 的初步测试显示,使用八个线程时,每次读取的内核周期数从约 2950 降至 725 左右,每秒读取次数从约 1000 万次提升至 3000 万次以上。但他同时警告,由于机器存在温度节流,按次读取成本是更准确的指标。

值得注意的是,Torvalds 承认其代码、测试程序及文档草稿均在 LLM 编码助手(Claude Code)指导下完成。早期版本曾因页面分配器无法识别等待宽限期的页面,在测试中触发 OOM 杀手。10 月 13 日,Torvalds 提交了仅对读取操作持续返回的 folio 进行延迟释放的修订版,报告称在 Ryzen Threadripper 处理器上,64 线程每秒读取次数从 1330 万跃升至 3.04 亿,但他强调这并非真实负载水平。

修订版优化与性能表现

Shutsemau 的修订版基于 Linux 7.3-rc7,仅对被标记为 " 热 " 的 folio 启用新的 PG_rcu_free 标志。这意味着流式读取和冷数据不会被延迟,从而控制内存占用并减少释放操作的影响。此外,新补丁在内核触发 OOM 杀手或允许隔离失败前释放等待中的页面,并将无锁读取扩展到大 folio 和 tmpfs。

在配备 AMD Threadripper 7975WX 处理器的 64 vCPU KVM 访客机测试中,Shutsemau 展示了以下性能提升(默认启用 CPU 安全缓解措施):

ext4 文件系统:每秒读取次数从 1500 万 -1570 万提升至 6890 万 -7010 万;

tmpfs:从 160 万 -170 万飙升至 7100 万 -7200 万;

XFS:从 1130 万 -1140 万上升至 2040 万 -2050 万;

原始块设备:从 1470 万提升至 2880 万 -2890 万。

测试显示,单线程读取性能基本保持不变,而持续发生页错误的负载性能下降了 4%-6%,这与 Torvalds 此前的 RFC 结果一致。若关闭安全缓解措施,早期版本曾将 ext4 读取性能推高至 2.17 亿 -2.2 亿次 / 秒。

目前该补丁集仍处于 RFC 阶段,存在未决事项。例如,第 17 号补丁提议从 tmpfs 读取中移除 folio 锁,Shutsemau 认为此举安全,但仍需社区专家进一步确认。

【星途科讯 图文丨小林 首发于 ZAKER 科技,转载请注明出处】

相关阅读

最新评论

没有更多评论了

觉得文章不错,微信扫描分享好友

扫码分享

企业资讯

查看更多内容