KernelDiag: Agent-Based Root Cause Diagnosis for Kernel Crashes
KernelDiag 是一个基于智能体的框架,它通过将异构诊断制品与源代码对齐,并利用专门的智能体构建结构化证据图,实现了 Linux 内核根因诊断的自动化,从而在准确定位故障和生成可操作解释方面显著优于现有方法。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
请将 Linux 内核想象成整个数字世界中一个隐形的、超级复杂的引擎室。它是驱动从你的智能手机到运行互联网的服务器等一切设备背后的庞大且古老的代码。保持这个引擎平稳运行对于人类工程师来说是一场噩梦,因为它如此庞大且错综复杂,以至于当它发生故障时,线索是零散的、令人困惑的,并且往往隐藏在层层机械结构深处。这就是“根因诊断”(root cause diagnosis)领域——即通过侦探式的调查来弄清楚系统究竟为什么崩溃以及问题是如何开始的。通常,当一台计算机崩溃时,它会留下身后一堆混乱的证据:一条可怕的错误信息、一份崩溃前发生的事件日志,以及一条记录了触发崩溃的命令。对于人类来说,将这些碎片拼凑在一起,就像是在试图解开一个拼图,而其中一半的碎片来自另一个盒子,是用外语写的,而且盒子上原本该有的图案也丢失了。
最近,科学家们开始使用“大语言模型”(LLMs)——即在海量文本上训练出的超智能 AI 聊天机器人——来帮助解决这些谜团。把这些 AI 想象成才华横溢的侦探,他们能阅读数百万份手册并瞬间识别出模式。然而,大多数 AI 侦探都是针对较简单的犯罪进行训练的,比如为什么网站变慢或为什么云服务出现了波动。它们并不擅长处理 Linux 内核这种特定类型的混乱,在这种情况下,线索非常稀缺,语言属于低级语言,且崩溃的原因可能离崩溃实际发生的地方有数英里之遥。这篇论文介绍了一种名为 KernelDiag 的新型专门化 AI 侦探团队,专门设计用于破解这些棘手的内核案件。
KernelDiag 背后的研究人员意识到,旧的方法——仅仅观察崩溃报告并进行猜测——效果并不理想。他们发现现有的 AI 工具经常陷入困境,因为它们不知道如何将不同类型的线索连接起来。为了解决这个问题,他们构建了一个 AI 不仅仅是在“阅读”,而是在“行动”的系统。他们创建了一个由专门的“智能体”(agents)组成的团队,每个智能体都有特定的职责。其中一个智能体是“系统调用侦探”(Syscall Detective),负责观察发送给计算机的命令;另一个是“日志分析师”(Log Analyst),负责扫描混乱的运行时笔记;第三个是“崩溃报告员”(Crash Reporter),负责研究最终的错误信息。与其让一个巨大的大脑试图同时处理所有事情,不如让这些智能体协同工作,彼此交流,并深入挖掘 Linux 内核的实际源代码以寻找真相。
KernelDiag 的魔力在于这些智能体是如何交流的。它们不仅仅是写一个摘要,而是构建一个“证据图”(Evidence Graph)。想象一下这是一个动态的地图,其中的每一条线索都是一个点,而连接它们的线条则展示了一个问题是如何导致另一个问题的。如果一个命令触发了一条日志条目,进而导致一个代码函数失效,智能体会画出一条线将它们连接起来。这有助于它们追踪“故障传播”(fault propagation)——即错误在系统中传递的路径。该系统还使用特殊工具将混乱的日志翻译成精确的代码行,确保 AI 不仅仅是在猜测,而是真正指向出错的具体代码函数。
当研究人员在包含 279 个 Linux 内核崩溃的真实世界数据集(一个名为 KGYM 的基准测试)上测试 KernelDiag 时,结果令人印象深刻。在那些崩溃报告没有提供明显提示的最难案例中,KernelDiag 表现得脱颖而出。它在第一次尝试时就成功找到了导致崩溃的正确文件,成功率达到了 31.43%,而次优的方法则完全失败(0%)。当寻找具体的代码行(即方法)时,KernelDiag 在前 10 个猜测中找到罪魁祸首的概率为 34.78%,这几乎是之前最好工具性能的两倍。即使在有提示的较简单案例中,KernelDiag 仍然优于所有人,在第一次尝试时正确找到文件的概率为 65.95%。
除了寻找 Bug 之外,团队还检查了 AI 是否能够解释为什么这是一个 Bug。他们要求人类专家和另一个 AI 对这些解释进行评分。KernelDiag 的得分始终高于竞争对手,其提供的解释不仅准确,而且具有可操作性——这意味着人类开发者实际上可以使用该解释来解决问题。研究人员还在 AI 训练之后发生的全新崩溃案例上测试了该系统,证明了它不仅仅是在死记硬背旧答案,而是在学习如何通过逻辑推理来解决新问题。
论文指出,这种利用专门化智能体来构建结构化证据地图的方法,是解锁像 Linux 内核这样复杂系统的自动化诊断的关键。虽然该系统并不完美——它在处理某些非常罕见且复杂的内存错误时仍显吃力——但它代表了向前迈出的重要一步。作者展示了通过将问题分解为更小的、专门的任务,并迫使 AI 构建一个逻辑上的因果图谱,我们可以从“猜测”转向“知晓”我们的数字引擎为何损坏。这项工作为实现这样一个未来奠定了基础:届时计算机可以帮助我们调试它们自身最深层、最复杂的故障,从而为工程师节省无数小时的挫败感。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。