开源 sysgrok - 用于分析、理解和优化系统的人工智能助手

Sysgrok 是一个实验性的概念验证,旨在展示如何使用 LLM 来帮助 SWE 和 SRE 了解系统、调试问题和优化性能。

无缝连接领先的 AI 和机器学习平台。开始免费云服务试用,探索 Elastic 的生成式 AI 功能,或者立即在您的计算机上试用。

在这篇文章中,我将介绍 sysgrok,这是一个研究原型,我们正在研究如何将 OpenAI 的 GPT 模型等大型语言模型 (LLM) 应用于性能优化、根本原因分析和系统工程等领域的问题。您可以在GitHub 上找到它。

sysgrok 是做什么的?

sysgrok 的功能包括

  • 提取剖析器识别出的最昂贵的函数和进程,解释每个函数和进程提供的功能,并提出优化建议
  • 获取一台主机和该主机遇到的问题描述,自动调试问题并提出补救措施和进一步行动建议
  • 使用剖析器注释过的源代码,解释热点路径,并提出提高代码性能的方法

sysgrok 的功能主要针对三大类解决方案:

  1. 作为性能、可靠性和其他系统相关数据的分析引擎。在这种模式下,LLM 接收工程师使用的其他工具(如 Linux 命令行工具、剖析器或 Observability 平台)的输出。sysgrok 的目标是使用 LLM 对系统状态进行解释、总结并形成假设。然后,它还可能提出优化或补救建议。
  2. 作为特定性能和可靠性相关任务的重点自动化解决方案。在性能工程和 SRE 工作中,有些任务会反复出现。对于这些问题,我们可以建立重点突出的自动化助手,工程师可以直接使用,sysgrok 本身也可以在解决其他问题时使用。例如,在性能工程中,回答这样的问题":"这个库是否有更快的、具有同等功能的版本?" "是很常见的。sysgrok 可直接支持该功能。
  3. 作为性能和可靠性问题的自动根本原因分析工具。前两类解决方案是数据分析、解释、搜索和总结的混合体。最重要的是,它们都是以一种有针对性的方式应用于工程师自己收集的数据。在 sysgrok 中,我们还在研究利用 LLM 解决问题的第三种方法,即 LLM 与其他工具相结合,自主执行根本原因分析并解决给定问题。在这种方法中,LLM 会得到一个问题描述(如"网络服务器出现高延迟" ),并告诉它有哪些功能可用(如"ssh 到主机," " 执行任意 Linux 命令行工具" )。然后,要求当地联络机制利用现有能力采取行动,对问题进行分流。这些操作由 sysgrok 执行,并要求 LLM 分析结果、分流问题、提出补救措施和下一步建议。

sysgrok 还处于早期阶段,但我们发布它是因为它已经在各种任务中发挥了作用--我们希望它能为其他人进行类似实验提供方便。如果您有任何想法,请随时向我们发送 PR 或在 GitHub 上打开问题!

分析 LLM 的性能问题

在过去的几个月里,LLM(如 OpenAI 的 GPT 模型)大受欢迎,它为各种产品(从客户助理聊天机器人到数据处理助手,再到编码助手)提供了自然语言接口和核心引擎。这一趋势的一个有趣方面是,基本上所有这些应用都使用了未经专门训练或微调的通用模型。相反,它们是在整个互联网的大范围内训练出来的,因此适用于各种任务。

那么,我们能否利用这些模型来帮助进行性能分析、调试和优化呢?调查性能问题、找出根本原因并提出优化方案的方法多种多样。不过,任何性能分析工作的核心都是查看各种工具(如 Linux 命令行工具或可观测性平台)的输出,并对输出进行解释,从而形成有关系统状态的假设。在对 GPT 模型进行培训的材料中,有涵盖软件工程、调试、基础设施分析、操作系统内部、Kubernetes、Linux 命令及其用法以及性能分析方法的资料。因此,这些模型可用于总结、解释和假设性能工程师日常遇到的数据和问题,从而加快工程师完成分析的速度。

不过,我们还可以更进一步,在工程师自己的调查过程中,不仅仅将 LLM 用于数据分析和问题解答。正如我们稍后将在本篇文章中展示的,在某些情况下,LLM 本身可用于驱动流程,由 LLM 决定运行哪些命令或查看哪些数据源来调试问题。

演示

有关 sysgrok 支持的全部功能,请查看 GitHub代码库。从广义上讲,它支持三种解决问题的方法:

在这种模式下,LLM 会收到工程师正在使用的另一个工具的输出,如 Linux 命令行工具、剖析器或可观测性平台。sysgrok 的目标是解释、总结并提出补救建议。

例如,topn子命令会获取剖析器报告的最昂贵函数,解释输出结果,然后提出优化系统的建议。

这段视频还展示了 sysgrok 提供的聊天功能。当提供 -chat 参数时,sysgrok 将在 LLM 每次回复后进入聊天会话。

这一功能也可通用于 Linux 命令行工具的输出。例如,在《60 秒内完成 Linux 性能分析》(Linux Performance Analysis in 60 seconds)一文中,Brendan Gregg 概述了 SRE 首次连接到出现性能或稳定性问题的主机时应运行的 10 条命令。analyzecmd子命令将要连接的主机和要执行的命令作为输入,然后为用户分析和汇总命令的输出。我们可以用它来自动完成 Gregg 所描述的过程,为用户提供 10 条命令生成的所有数据的一段式摘要,省去用户逐条查看命令输出的麻烦。

在性能工程和 SRE 工作中,有些任务会反复出现。对于这些问题,我们可以建立有针对性的自动化助手,工程师可以直接使用,sysgrok 本身也可以在解决其他问题时使用。

例如,finfaster子命令将库或程序的名称作为输入,并使用 LLM 查找更快的等效替代库或程序。这是性能工程中非常常见的一项任务。

这种方法在 sysgrok 中的另一个例子是explainfunction子命令。该子命令使用一个库的名称和该库中的一个函数。它解释了该库的作用及其常见用例,然后解释了其功能。最后,如果该库和函数占用了大量 CPU 资源,它还会提出可能的优化建议。

方法 3:作为性能和可靠性问题的自动根本原因分析工具

LLM 的使用不仅限于集中问题解答、摘要和类似任务。它也不局限于一次性使用,即向他们提出一个单一的、孤立的问题。sysgrokdebughost子命令演示了如何将 LLM 用作"大脑" ,以实现自动解决问题的目标。在这种模式下,LLM 被嵌入到一个进程中,该进程使用 LLM 来决定如何调试特定问题,并赋予它连接主机、执行命令和访问其他数据源的能力。

debughost 命令可能是 sysgrok 目前最具实验性的部分。它展示了在实现性能分析自动代理的道路上迈出的一步,但要达到这一目标还需要大量的研究&D。

结论

在这篇文章中,我介绍了 sysgrok,这是一款全新的开源人工智能助手,用于分析、理解和优化系统。我们还讨论了 sysgrok 实现的三大类方法:

  1. 性能、可靠性和其他系统相关数据的分析引擎:请参阅 topn、stacktrace、analyzecmd 和 code 子命令。
  2. 针对特定性能和可靠性相关任务的自动化解决方案:请参阅 explainprocess、explaintfunction 和 findfaster 子命令。
  3. 自动分析性能和可靠性问题的根本原因:参见 debughost 子命令。

你可以在 GitHub 上找到 sysgrok 项目。请随时创建公关和问题,如果您想讨论项目或法律硕士的一般应用,也可以直接通过sean.heelan@elastic.co联系我。

相关内容

准备好打造最先进的搜索体验了吗?

足够先进的搜索不是一个人的努力就能实现的。Elasticsearch 由数据科学家、ML 操作员、工程师以及更多和您一样对搜索充满热情的人提供支持。让我们联系起来,共同打造神奇的搜索体验,让您获得想要的结果。

亲自试用