Loading...

AI帮忙找Bug,代码却让人无奈,重写成了常态



最近,Arm的工程师Lorenzo Stoakes在Linux内核开发中感受到了AI的强大,但同时也体验到了“不忍直视”的代码水平。想要提高Linux内核编译速度,他请来了大模型来帮助定位问题,结果AI确实找到了许多藏在复杂流程中的性能瓶颈,连后面的构建、测试、调试和分析也一并搞定了。可是,当需要AI来写修复代码时,Stoakes一语道破:“它生成的代码简直惨不忍睹!”

about image

于是,最初的设想变成了:AI负责挖掘问题,而人类则得手动修整AI写出来的代码。好在,经过Stoakes的仔细审查和重写,最终提交的23个补丁让Linux内核的构建速度大幅提升:开启所有模块的构建速度最高提高了36%,增量构建提升约70%,某些情况下甚至一度快了90%。

about image

对Linux内核开发者而言,编译内核是家常便饭:改完代码就编译,发现Bug再改,然后重复这个过程。然而,Linux内核的庞大让人头疼。虽然现代CPU拥有多个核心,可以处理大量编译任务,但实际上构建流程中还是有很多只能单线程执行的环节。换句话说,电脑里明明有一大堆CPU核心在待命,但有些任务却只能一个一个来,前一个没完成,后面的就得乖乖排队,其他核心只能闲着。 谈球吧

Stoakes这次的工作是逐个找出这些“排队点”,想办法让更多的任务并行执行。这可不是随便修改一行代码就能解决的,涉及到Linux构建系统中的多个核心部分。他提交的23个补丁不仅包含Kbuild、kallsyms等多方面的优化方案,还有Linux内核Rust构建系统的调整。关键是,这次他并不完全依赖自己,而是将AI当作重要助手。

谈到AI在这过程中扮演的角色,Stoakes没有透露自己使用的是哪款大语言模型,但对于这种庞大工程,AI的优势非常明显。它可以迅速地扫描大量代码和构建信息,找出值得注意的地方。他提到,AI在多个环节中表现活跃,包括分析构建流程、寻找瓶颈,再提出改进方案,甚至参与构建运行、测试和结果分析。不过,Stoakes的头疼来自于AI生成的代码质量——他用了“惨不忍睹”来形容。

最终,他得花不少时间重写和修正这些代码,还得重新整理提交信息和注释。对于他而言,这并不是“让AI自动化生成23个补丁”那么简单,而是要把AI扔在桌上的一堆可能性逐一审查:哪些方案可用,哪些代码要重写,哪些直接扔掉,最终保留下来的才能进入Linux内核的开发流程。 谈球吧

尽管这过程有些费劲,AI生成的代码不够理想,Stoakes还是得感谢AI帮他找到了有价值的Bug。经过他的人工修改和验证,最终23个补丁不仅减轻了不必要的串行等待,也让不同任务间的并行性大大提升,成效相当不错:全部模块的构建速度最高提升了36%、增量构建最高约70%、某些无需大规模重新编译的构建场景甚至快了90%。

about image

谈球吧,谈球吧体育,谈球吧(官方网站),集团集于全球火爆的游戏于一体的大型平台,让每位玩家玩出最有价值的游戏体验