当前位置: 首页 > news >正文

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

作者:Sean Heelan

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

Sysgrok 是做什么的?

sysgrok 可以执行以下操作:

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

Sysgrok 的功能针对三大类解决方案:

  1. 作为性能、可靠性和其他系统相关数据的分析引擎。 在这种模式下,LLM (Large Language Model)会收到工程师使用的其他一些工具(例如 Linux 命令行工具、分析器或可观察性平台)的输出。 Sysgrok 的目标是使用 LLM 解释、总结并形成有关系统状态的假设。 然后,它还可能建议优化或补救措施。
  2. 作为针对特定性能和可靠性相关任务的专注的自动化解决方案。 在性能工程和 SRE 工作中,有些任务会反复出现。 对于这些,我们可以构建有针对性的自动化助手,工程师或 sysgrok 本身可以直接使用它们来解决其他问题。 例如,在性能工程中,回答以下问题:“Is there a faster version of this library with equivalent functionality (该库是否有具有同等功能的更快版本)?” 。 sysgrok 直接支持这一点。
  3. 作为性能和可靠性问题的自动化根本原因分析工具。 前两类解决方案是数据分析、解释、搜索和总结的组合。 至关重要的是,它们以集中的方式应用于工程师自己收集的数据。 在 sysgrok 中,我们还在研究使用 LLM 解决问题的第三种方法,其中 LLM 与其他工具相结合,自动执行给定问题的根本原因分析和解决方案。 在这种方法中,LLM 会得到问题描述(例如,“The web server is experiencing high latency(Web 服务器正在经历高延迟)”),并被告知可以使用哪些功能(例如,“ssh to host”、“execute arbitrary Linux command line tools”) )。 然后,LLM 被要求采取行动,利用其可用的能力,对问题进行分类。 这些操作由 sysgrok 执行,LLM 被要求分析结果、对问题进行分类、提出补救措施并建议后续步骤。

Sysgrok 仍处于早期阶段,但我们发布它是因为它已经可用于各种任务 - 我们希望它将成为其他人执行类似实验的便捷基础。 如果你有任何想法,请随时向我们发送 PR 或在 GitHub 上提交问题!

使用 LLM 分析性能问题

LLM,例如 OpenAI 的 GPT 模型,在过去几个月中迅速流行,为各种产品提供自然语言界面和核心引擎,从客户助理聊天机器人到数据操作助手,再到编码助理。 这种趋势的一个有趣的方面是,基本上所有这些应用程序都使用现成的通用模型,这些模型没有针对当前的任务进行专门训练或微调。 相反,它们接受了整个互联网大范围的培训,因此适用于各种各样的任务。

那么,我们能否利用这些模型来帮助进行性能分析、调试和优化呢? 有多种方法可用于调查性能问题、对根本原因进行分类并提出优化方案。 但从本质上讲,任何性能分析工作都将涉及查看各种工具(例如 Linux 命令行工具或可观察平台)的输出,并解释该输出以形成有关系统状态的假设。 GPT 模型训练的材料包括软件工程、调试、基础设施分析、操作系统内部结构、Kubernetes、Linux 命令及其用法以及性能分析方法。 因此,这些模型可用于总结、解释和假设性能工程师日常遇到的数据和问题,这可以加快工程师进行分析的速度。

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

演示

有关 sysgrok 支持的全套功能,请查看 GitHub 存储库。 总的来说,它支持三种解决问题的方法:

方法一:作为性能、可靠性和其他系统相关数据的分析引擎

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

例如,topn 子命令采用分析器报告的最昂贵的函数,解释输出,然后建议优化系统的方法。

sysgrok - LLM-based analysis of Top N functions reported by a profiler and optimisation suggestions - asciinema

该视频还展示了 sysgrok 提供的聊天功能。 当提供 –chat 参数时,sysgrok 将在 LLM 的每次响应后进入聊天会话。

此功能还可以普遍应用于 Linux 命令行工具的输出。 例如,在《60 秒 Linux 性能分析》一文中,Brendan Gregg 概述了 SRE 在首次连接到遇到性能或稳定性问题的主机时应运行的 10 个命令。 analyzecmd 子命令将要连接的主机和要执行的命令作为输入,然后为用户分析和总结命令的输出。 我们可以使用它来自动化 Gregg 描述的过程,并向用户提供 10 个命令生成的所有数据的一段摘要,从而省去他们必须逐一查看命令输出的麻烦。

sysgrok - Automating Brendan Gregg's "Linux Performance Analysis in 60 seconds" - asciinema

 

方法 2:作为针对特定性能和可靠性相关任务的集中式自动化解决方案

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

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

sysgrok - Using an LLM to find a faster drop-in replacement for a given library or program - asciinema

 

Sysgrok 中这种方法的另一个示例是 explainfunction 子命令。 该子命令采用库的名称和该库中的函数。 它解释了该库的用途及其常见用例,然后解释了该函数。 最后,如果该库和函数消耗大量 CPU 资源,它会建议可能的优化。

sysgrok - Using an LLM to explain a library & function, and give optimisation recommendations - asciinema

 

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

LLM 的用途不仅限于集中回答问题、总结和类似任务。 它也不限于一次性使用,即提出一个单一的、孤立的问题。 sysgrok debughost 子命令演示了如何将 LLM 用作代理中的 “大脑”,以实现自动解决问题的目标。 在此模式下,LLM 嵌入到一个进程中,该进程使用 LLM 来决定如何调试特定问题,并使其能够连接到主机、执行命令和访问其他数据源。

sysgrok - Automatically debug a problem on a remote host using an LLM - asciinema

 

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

结论

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

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

你可以在 GitHub 上找到 sysgrok 项目。 请随意创建 PR 和问题,或者如果你想讨论一般 LLM 的项目或应用,你可以通过 Sean.heelan@elastic.co 直接与我联系。

相关文章:

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

作者:Sean Heelan 在这篇文章中,我将介绍 sysgrok,这是一个研究原型,我们正在研究大型语言模型 (LLM)(例如 OpenAI 的 GPT 模型)如何应用于性能优化、根本原因分析和系统工程领域的问题。 你可以在 GitHub …...

Gitlab保护分支与合并请求

目录 引言 1、成员角色指定 1、保护分支设置 2、合并请求 引言 熟悉了Git工作流之后,有几个重要的分支,如Master(改名为Main)、Develop、Release分支等,是禁止开发成员随意合并和提交的,在此分支上的提交和推送权限仅限项目负责…...

ad18学习笔记九:输出文件

一般来说提供给板卡厂的文件里要包括以下这些文件 1、装配图 2、bom文件 3、gerber文件 4、转孔文件 5、坐标文件 6、ipc网表 AD_PCB:Gerber等各类文件的输出 - 哔哩哔哩 原点|钻孔_硬件设计AD 生成 Gerber 文件 1、装配图 如何输出装配图? 【…...

PostgreSQL 内存配置 与 MemoryContext 的生命周期

PostgreSQL 内存配置与MemoryContext的生命周期 PG/GP 内存配置 数据库可用的内存 gp_vmem 整个 GP 数据库可用的内存 gp_vmem: >>> RAM 128 * GB >>> gp_vmem ((SWAP RAM) - (7.5*GB 0.05 * RAM)) / 1.7 >>> print(gp_vmem / G…...

vue3 组件间通信的方式(setup语法糖写法)

vue3 组件间通信的方式(setup语法糖写法) 1. Props方式 该方式用于父传子&#xff0c;父组件以数据绑定的形式声明要传递的数据&#xff0c;子组件通过defineProps()方法创建props对象&#xff0c;即可拿到父组件传来的数据。 // 父组件 <template><div><son…...

【Cache】Rsync远程同步

文章目录 一、rsync 概念二、rysnc 服务器部署1. 环境配置2. rysnc 同步源服务器2.1 安装 rsync2.2 建立 rsyncd.conf 配置文件2.3 创建数据文件&#xff08;账号密码&#xff09;2.4 启动服务2.5 数据配置 3. rysnc 客户端3.1 设置同步方法一方法二 3.2 免交互设置 4. rysnc 认…...

Gitlab升级报错一:rails_migration[gitlab-rails] (gitlab::database_migrations line 51)

Gitlab-ce从V14.0.12升级到V14.3.6或V14.10.5时报错&#xff1a;如下图&#xff1a; 解决办法&#xff1a; 先停掉gitlab: gitlab-ctl stop 单独启动数据库&#xff0c;如果不单独启动数据库&#xff0c;就会报以上错误 sudo gitlab-ctl start postgresql 解决办法&#x…...

chatGPT流式回复是怎么实现的

chatGPT流式回复是怎么实现的 先说结论&#xff1a; chatGPT的流式回复用的就是HTTP请求方案中的server-send-event流式接口&#xff0c;也就是服务端向客户端推流数据。 那eventStream流式接口怎么实现呢&#xff0c;下面就进入正题&#xff01; 文章目录 chatGPT流式回复…...

使用SpringEL获得字符串中的表达式运算结果

概述 有时候会遇上奇怪的需求&#xff0c;比如解析字符串中表达式的结果。 这个时候自己写解析肯定是比较麻烦的&#xff0c; 正好SprinngEL支持加()、减(-)、乘(*)、除(/)、求余&#xff08;%&#xff09;、幂&#xff08;^&#xff09;运算&#xff0c;可以免去造轮子的功夫…...

力扣 39. 组合总和

题目来源&#xff1a;https://leetcode.cn/problems/combination-sum/description/ C题解&#xff1a; 递归法。递归前对数组进行有序排序&#xff0c;可方便后续剪枝操作。 递归函数参数&#xff1a;定义两个全局变量&#xff0c;二维数组result存放结果集&#xff0c;数组pa…...

基于BES系列蓝牙耳机NTC充电电池保护电路设计

+hezkz17进数字音频系统研究开发交流答疑 一 在充电电路中NTC作用? 在充电电路中,NTC(Negative Temperature Coefficient)热敏电阻通常被用于温度检测和保护。它具有随温度变化而变化的电阻值。 以下是NTC在充电电路中的几种常见作用: 温度监测:NTC热敏电阻可以用来测量…...

13-C++算法笔记-递归

&#x1f4da; Introduction 递归是一种常用的算法设计和问题求解方法。它基于问题可以分解为相同类型的子问题&#xff0c;并通过解决子问题来解决原始问题的思想。递归算法在实际编程中具有广泛的应用。 &#x1f3af; 递归算法解决问题的特点 递归算法具有以下特点&#…...

从古代八卦探究计算机的八进制

八进制&#xff0c;即八卦&#xff0c;是中国古代哲学体系中非常重要的一个概念&#xff0c;它被广泛应用于易经、道家、儒家等诸多领域。随着计算机科学的快速发展&#xff0c;人们开始思考&#xff1a;八进制是否可以应用到计算机上&#xff1f; 一、什么是八进制&#xff1…...

Linux shell mkfs.ext4命令参数使用

mkfs mkfs是个综合命令 mkfs 然后按两下tab 查看系统支持哪些文件系统的格式化功能 mkfs -t 文件系统格式名 以指定的文件系统格式来进行磁盘格式化 > 等于 mkfs.文件系统格式名 比如&#xff1a; mkfs -t xfs mkfs.xfs 常见的磁盘格式…...

【Docker】子系统与其相关名词的界定、Control Groups等详细讲解

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 &#x1f4d5;作者简介&#xff1a;热…...

spring事务的传播性与隔离性

spring事务的传播性 REQUIRED&#xff08;必须的&#xff09;(TransactionDefinition.PROPAGATION_REQUIRED) 使用当前的事务&#xff0c;如果当前没有事务&#xff0c;则自己新建一个事务&#xff0c;子方法是必须运行在一个事务中的&#xff0c;如果当前存在事务&#xff0c…...

【设计模式】模板方法与策略模式的结合使用

文章目录 1. 概述1.1.简述模板方法 2.模板方法实现2.1.简单实现2.2.在SpringBoot中的实现 3.模板方法与策略模式的结合使用3.1.代码实现 4.总结 1. 概述 模板方法是一种非常简单的设计模式&#xff0c;只要能够理解面向对象中的继承与多态就能够理解这种设计模式&#xff0c;我…...

Jmeter实现参数加密

目录 一、使用__digest自带函数 以md5加密算法演示使用方法 二、在BeanShell 中使用JAVA代码实现算法加密 规避BUG的方法 JMeter有两种方法可以实现算法加密 一、使用__digest自带函数 参数说明&#xff1a; Digest algorithm&#xff1a;算法摘要&#xff0c;可输入值&a…...

Solon Web 开发:四、认识请求上下文(Context)

Handler Context 架构&#xff0c;是Solon Web 的基础。在 Context &#xff08;org.noear.solon.core.handle.Context&#xff09;里可以获取&#xff1a; 请求相关的对象与接口会话状态相关的对象与接口响应相关的对象与接口 或者理解所有请求与响应相关的&#xff0c;都在…...

docker安装RocketMQ(附填坑经验connect to <172.17.0.3:10909> failed)

目录 一、docker部署RocketMQ1、简易说明2、docker拉取RocketMQ镜像\RocketMQ控制台3、获取RocketMQ配置文件4、RocketMQ配置文件描述5、docker启动RocketMQ6、进入RocketMQ控制台 二、填坑经验错误一: connect to <172.17.0.3:10909> failed错误二: maybe your broker m…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...