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

news2024/11/18 21:52:30

作者: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 直接与我联系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/706751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个真实的社会工程学攻击

社会工程学实例 不同于以往通过心理诱骗暗示或欺诈手段社会工程学举例,本次为大家介绍一种特殊的结合刑侦推理及利用技术手段实现的社会工程学实例,可以把它归类为特殊层面的信息收集手段——通过照片确定发拍照人所在的位置,这种社工手段严格…

ExtJS4 相关

2. 程序架构 2.1 目录结构 推荐下面这种目录结构(非强制,如果你足够懂和自信) - appname- app- namespace- Class1.js- Class2.js- ...- extjs- resources- css- images- ...- app.js- index.html appname 包含所有程序代码,是根目录 app 包含所有类&…

MySQL基础篇(day03,复习自用)

MySQL第三天 排序与分页内容练习 多表查询内容练习 排序与分页 内容 #第五章 排序与分页#1.排序 #如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序显示的。 SELECT * FROM employees;#1.1基本使用 #使用 ORDER BY 对查询到的数据进行排序操作 …

JSON轻量级数据交换格式

文章目录 前言前后端数据交换格式比较JavaScript自定义对象 前言 JSON全名 :JavaScriptObjectNoation JSON在后端和前端中起着非常重要的作用。 在前端,JSON被用作一种数据格式,用于从服务器获取数据并将其展示在网页上; 前端开…

[SpringBoot]单点登录

关于单点登录 单点登录的基本实现思想: 当客户端提交登录请求时,服务器端在验证登录成功后,将生成此用户对应的JWT数据,并响应到客户端 客户端在后续的访问中,将自行携带JWT数据发起请求,通常&#xff0c…

LeetCode 2501 数组中最长的方波 Java

方法一,哈希表枚举 构造哈希集合,记录出现过的数字枚举遍历 import java.util.HashSet; import java.util.Set;class Solution {public int longestSquareStreak(int[] nums) {//构造哈希表集合,记录出现过的数字,转long型&…

kafka入门,Leader 和 Follower 故障处理细节(十四)

Leader 和 Follower 故障处理细节 LEO:每个腹部最后一个offset,leo其实就是最新的offset1 HW:所有副本中最小的LEO Follower故障处理细节 (1)Follower发生故障会被临时提出ISR (2) 这个期间leader和Follower积蓄接收数据 (3) 待该Follower恢复后&#…

嵌入式基础知识

1.嵌入式系统的定义 以应用为中心,以计算技术为基础软硬件可裁剪,适应系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机技术。 主要由嵌入式微控制器、外围硬件设备、嵌入式操作系统以及用户应用软件等部分分组成。 具有“嵌入式” 、“专用…

CSS 内容盒子与边框盒子

这章比较重要,会不断更新❗ 文章目录 👇内容盒子开发者工具的使用border 边框padding 内边距margin 外边距盒子整体尺寸元素默认样式与CSS重置元素分类块级标记行级标记行内块标记 display样式内容溢出裁剪掉溢出部分滚动条 圆角边框 border-radius ✌边…

【MySQL数据库】MMM高可用架构

目录 一 、MMM简介1.1MMM(Master-Master replication manager for MvSQL,MySQL主主复制管理器)1.2关于 MMM 高可用架构的说明如下 二、搭建mysql MMM架构2.1实验环境2.2搭建多主多从2.3安装配置 MySQL-MMM 一 、MMM简介 1.1MMM(M…

【Linux系统编程】粘滞位详解

文章目录 1. 背景2. 准备问题引出 3. 粘滞位4. 思考粘滞位的存在是否是必要的谁可以删除 上一篇文章我们学习了Linux权限相关的内容,这篇文章,我们再来学习一个知识点——粘滞位。 1. 背景 那为了让大家更容易理解粘滞位的概念,首先我们要来…

【国产虚拟仪器】基于ZYNQ7045+V7 FPGA的多通道数据同步采集设计方案(一)

多通道数据采集设备在当前信息数字化的时代应用广泛,各种被测量的信息 如光线、温度、压力、湿度、位置等,都需要经过多通道信号采集系统的采样和 处理,才能被我们进一步分析利用[37]。在一些对采集速率要求较高的军事、航天、 航空、工业制造…

uniapp radio如何实现取消选中

uniapp 内置radio组件明确表示&#xff0c;不能取消选中&#xff0c;那如果要实现取消选中呢&#xff1f; 只要在外层加上label或者其他标签包裹&#xff0c;或者直接加入click事件然后加入事件控制radio的值改变即可 <label class"radio" click"changeAll&…

记录--Threejs-着色器实现一个水波纹

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 hree.js 是一个基于 WebGL 的 JavaScript 3D 库&#xff0c;用于创建和渲染 3D 图形场景。 一、 图像渲染过程 1、webGL webGL: WebGL 是一种基于 JavaScript API 的图形库&#xff0c;它允许在浏览器…

【STM32智能车】电机控制

【STM32智能车】电机控制 PWMPWM基本用法&#xff1a; 电机驱动基本控制基本状态 欢迎收看由咸鱼菌工作室出品的STM32系列教程。本篇内容主要电机控制 PWM 我们要控制电机&#xff0c;就要先了解一下PWM。 PWM(Pulse Width Modulation)控制——脉冲宽度调制技术&#xff0c;通…

全开源的 agv 小车

最近github 有 一个开源的stm32 大荷载小车&#xff0c;从pcb 到代码到cad 文件全部开源 代码在 git 小车的实物图 小车的cad 模型 小车的 abaqus 力学分析模型 pcb 图 控制板接线图 全开源小车 代码在 git

港科夜闻|香港科大(广州)与特斯联共建研究中心,打造国际领先的创新联合体...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大(广州)与特斯联共建研究中心&#xff0c;打造国际领先的创新联合体。6月27日&#xff0c;“数字世界”联合研究中心正式揭牌成立&#xff0c;这个由香港科大(广州)与特斯联共同打造的研究中心&#xff0c;旨在推…

hive中的datagrip和beeline客户端的权限问题

hive中的datagrip和beeline客户端的权限问题 使用ranger和kerberos配置了hadoop和hive&#xff0c;今天想用来测试其权限 测试xwq用户&#xff1a; 1.首先添加xwq用户权限&#xff0c;命令如下&#xff1a; useradd xwq -G hadoop echo xwq | passwd --stdin xwq echo xwq …

【笔记】EDA学习笔记

网课&#xff1a;立创EDA&#xff08;专业版&#xff09;电路设计与制作快速入门 资料&#xff1a;pan.baidu.com/s/1UlcfvAZ13s_wOHo3cvNQxA?pwdb9x8 提取码&#xff1a;b9x8 解压密码&#xff1a;123456 1.创建项目 略 2.原理图设计环境设置 2.1设置 默认网格尺寸&#…

阿里云云效 流水线发布spring cloud项目及Vue项目

1. 单体spring boot 项目流水线主机部署 1.1 创建流水线 页面地址 我们选择模板,当然也可以自己新建一个 1.2 添加流水线源 这里是根据自己的代码仓库决定的,我用的gitee,需要添加服务连接 添加服务连接 新建服务授权/证书 点击新建自动跳转至gitee认证页面,同意授权即可 授权…