推文
@prolibertine · 2026-10-13 19:01
Linus 周末往自己仓库推了个分支,名字就叫 noref-filemap-read-with-llm。8 个线程反复小块读同一个缓存文件,在他那台四核笔记本上从每秒 1000 万次左右跑到 3000 万出头,每次读的内核周期从约 2950 降到约 725,perf c2c 抓到的跨核 cache line 冲突从 30538 次掉到 101。 cover letter 里他写得很直:代码、测试程序、后面那张问题清单背后的评审,还有这封说明的初稿,都是 Claude Code 在他指挥下做的,测量在他自己机器上跑。 我觉得更值得看的是这个问题的来历。2023 年 2 月,page cache 的维护者 Matthew Wilcox 就在邮件列表里说过,这类几十到几百字节、全命中缓存的读,瓶颈就在 page 的引用计数上,每次读拿一次放一次,同一条 cache line 在所有核之间来回弹。他当时给了个思路,让 page 过一个 RCU 宽限期再释放,读的人不拿引用直接拷数据,然后说自己手上还有别的活。 三年多没人接,这回让 agent 接了。内核里这种「大家都知道怎么修、就是没人有空」的单子应该不少,agent 最先吃掉的大概就是这一堆。 他自己列的未解决问题也挺老实。延迟释放会让内存占得更久,早一版 6 个补丁在 2GiB 虚拟机压测里触发过 OOM killer;有个单线程的边角场景反而变慢,从约 4150 周期涨到 6550;大的多路服务器还没人跑过,而他觉得收益最大的恰恰是那种机器。分支现在没进主线,要看 7.4 合并窗口。 同一个周末还有个 assoc-array-fixes 的 tag。有人报了 assoc_array 库的 bug,还附了补丁,他说那段代码太绕自己看不懂,就「照我平时讲的做」,让大模型先把几个又长又难读的函数拆开,再扔进用户态的测试 harness 跑。除了报上来的那个,又找出三个 bug,全是 2013 年这个库第一次提交时就埋下的。 两件放一起,分工挺清楚。写代码、拆函数、出测试交给 agent,测量和「哪儿还没做完」那张单子他自己扛。内核社区这几周也在往这边搭东西:有人提议给内核加 agent 用的 skill,第一个是自动补 Fixes: 标签;Google 的 Sashiko 在给内核补丁做 agentic review;NVIDIA 在弄一个叫 Boro 的本地 AI 内核开发 CLI。 两年前他还说 AI 九成是营销,现在连分支名里都写着 llm。这种把谁干了哪部分写进提交说明的做法,我猜会比那三倍提速更快被别的项目抄走。
曝光 14 · 评论 0 · 点赞 0 · 书签 0