连续分析:提高应用效率和成本效益的关键

news2025/2/23 3:23:50

作者:John Knoepfle

最近,Elastic Universal Profiling 已经正式发布。 它是我们可观察性解决方案的一部分,允许用户在生产环境中进行整个系统的连续分析。 如果你不熟悉连续分析,你可能想知道通用分析是什么以及为什么你应该关心。 这就是我们将在这篇文章中讨论的内容。

效率很重要(再次)

在我们开始持续分析之前,让我们从 “我为什么要关心?” 开始。 问题。 为此,我想谈谈效率以及我们行业中发生的一些大规模趋势,这些趋势使效率(特别是计算效率)再次变得重要。 我再说一遍,因为在过去,当计算机上的内存和存储非常有限,你必须担心代码的每个字节时,效率是开发软件的一个重要方面。

摩尔定律的终结

首先,摩尔定律时代即将结束。 这是不可避免的,仅仅是由于晶体管的尺寸以及它们之间的连接的物理限制。 长期以来,软件开发人员不必担心复杂性和效率,因为下一代硬件将减轻任何负面的成本或性能影响。

如果你不能依赖不断进步的更快硬件,那么你应该对计算效率感兴趣。

转向软件即服务

另一个需要考虑的趋势是,从向客户出售软件以自行运营的软件供应商转向软件即服务业务。 传统的软件供应商不必过多担心其代码的效率。 这个问题主要由客户来解决; 新的软件版本可能需要将硬件更新为最新且性能最高的版本。 对于 SaaS 企业来说,低效的软件通常会降低客户的体验,并且肯定会影响利润。

如果你是竞争环境中的 SaaS 企业,你应该对计算效率感兴趣。

云迁移

接下来是向云计算的持续迁移。 云计算的好处之一是易于扩展,无论是硬件还是软件。 在云中,我们不受数据中心或下一次硬件购买的限制。 相反,我们只是简单地启动更多云实例来缓解性能问题。 除了基础设施可扩展性之外,微服务架构、容器化以及 Kubernetes 和类似编排工具的兴起意味着扩展服务比以往任何时候都更简单。 在云环境中运行数千个服务实例的情况并不罕见。 这种易于扩展的方式解释了另一个趋势,即许多企业正在应对飞涨的云计算成本。

如果你的企业云成本不断增加,你应该对计算效率感兴趣。

我们不断变化的气候

最后,如果这些原因都没有激起你的兴趣,让我们考虑一个我们所有人都应该牢记的全球问题 —— 即气候变化。 应对气候变化需要解决很多问题,但由于我们社会各个领域都依赖软件,计算效率当然是我们应该考虑的问题。

Elastic 杰出工程师、Optymize 创始人之一 Thomas Dullien 指出,如果你可以在 800 台服务器上节省 20%,并假设每台服务器的功耗为 300W,则代码更改相当于每年节省 160 吨二氧化碳。 这似乎只是杯水车薪,但如果所有企业都更多地关注计算效率,它将产生影响。 此外,我们不要忘记经济效益:减少 160 吨二氧化碳排放也意味着每年可节省大量成本。

如果你生活在地球上,你应该对计算效率感兴趣。

性能工程

担心计算效率是谁的工作? 应用程序开发人员在开发代码时通常至少会关注效率。 分析是开发人员了解其代码性能的常用方法,并且有一整套可用的分析工具。 然而,进度压力常常胜过花在性能分析和计算效率上的时间。 此外,直到应用程序在生产中大规模运行并与该环境中的其他所有内容交互(和竞争)时,性能问题可能不会变得明显。 许多分析工具不太适合在生产环境中使用,因为它们需要代码检测和重新编译,并且会增加大量开销。

当低效代码投入生产并开始导致性能问题时,下一道防线是运营或 SRE 团队。 他们的使命是让一切正常运转,性能问题肯定会引起人们的关注。 APM 等可观察性工具可以揭示这些类型的问题,并引导团队找到特定的应用程序或服务,但这些工具对整个系统的可观察性有限制。 如果生产环境中没有分析解决方案,第三方库和操作系统内核功能将保持隐藏状态。

那么,当需要调查生产中的性能问题时,这些团队可以做什么呢? 这就是连续分析的用武之地。

连续分析

连续分析并不是一个新想法。 Google 在 2010 年发表了一篇相关论文,并开始在其环境中实施持续分析。 不久之后,Facebook 和 Netflix 也纷纷效仿。

通常,连续分析工具一直是专门的性能工程或操作系统工程团队的领域,这些团队通常只出现在像上面提到的超大规模企业中。 关键思想是始终在每台服务器上运行分析。 这样,当你的可观察性工具将你指向应用程序的特定部分,但你需要更详细地了解该应用程序消耗 CPU 资源的具体位置时,分析数据就会在那里,可供使用。

连续分析的另一个好处是,它提供了整个环境中 CPU 密集型软件的视图 - 无论是 CPU 密集型功能还是环境中每秒运行数千次的相对较小功能的集合。

虽然分析工具并不新鲜,但大多数都存在显着差距。 让我们看看几个最重要的。

  • 能见度有限。 现代分布式应用程序由复杂的构建块组合组成,包括自定义软件功能、第三方软件库、网络软件、操作系统服务,以及越来越常见的 Kubernetes 等编排软件。 要充分了解应用程序中发生的情况,你需要了解每个部分。 然而,即使开发人员能够分析自己的代码,其他一切仍然是不可见的。 更糟糕的是,大多数分析工具都需要对代码进行检测,这会增加开销,因此甚至开发人员的代码也不会在生产中进行分析。
  • 生产中缺少符号。 所有这些代码构建块通常都有描述性名称(有些比其他更直观),以便开发人员可以理解并理解它们。 在运行的程序中,这些描述性名称通常称为符号(Symbols)。 对于人们理解正在运行的应用程序的执行来说,这些名称非常重要。 不幸的是,几乎总是,在生产中运行的任何软件都会为了空间效率而剥离这些人类可读的符号,因为执行软件的 CPU 不需要它们。 如果没有所有符号,就很难全面了解应用程序中发生的情况。 为了说明这一点,请考虑一下你上次在移动设备上进行短信聊天时,你的地址簿中只有聊天组中的一些人,而其余的人只是显示为电话号码 - 这使得很难告诉谁在说什么。

Elastic 通用分析:为所有人提供连续分析

我们的目标是让任何企业,无论规模大小,都能将计算效率作为其运行的所有软件的核心考虑因素。 通用分析对服务器的开销非常低,因此可以在生产中使用,并且可以提供每台计算机上运行的所有内容的可见性。 它提供了查看业务中每个系统上运行的每行代码的财务单位成本和二氧化碳影响的可能性。 我们该怎么做呢?

整个系统的可见性 —— 简单

通用分析基于 eBPF,这意味着它对服务器的开销非常低(我们的目标是少于 1% CPU 和少于 250MB RAM),因为它不需要代码检测。 如此低的开销意味着它可以在每台服务器上连续运行,甚至在生产环境中也是如此。

eBPF 还允许我们在主机上部署单个探查器代理,并查看操作系统内部以查看 CPU 上执行的每一行代码。 这意味着我们可以了解上述所有应用程序构建块 —— 操作系统本身以及容器化和编排框架,而无需复杂的配置。

所有符号

通用分析的一个关键部分是我们的托管符号化服务。 这意味着你的服务器上不需要符号,这不仅消除了使用符号重新编译软件的需要,而且还允许通用分析代理将非常稀疏的数据发送回丰富的 Elasticsearch 平台,从而有助于减少开销以及所有缺失的符号。 由于我们维护着最流行的第三方软件库和 Linux 操作系统符号的存储库,因此通用分析 UI 可以向你显示所有符号。

你最喜欢的语言,然后是一些

通用分析是多语言的。 我们支持当今所有流行的编程语言,包括 Python、Go、Java(以及任何其他基于 JVM 的语言)、Ruby、NodeJS、PHP、Perl,当然还有 C 和 C++,这一点至关重要,因为这些语言仍然是其他语言使用的许多第三方库的基础。 此外,我们还支持分析原生代码,也即机器语言。

说到本机代码,所有分析工具都与特定类型的 CPU 相关。 目前大多数工具仅支持 Intel x86 CPU 架构。 通用分析支持基于 x86 和 ARM 的处理器。 随着基于 ARM 的服务器的广泛使用,尤其是在云环境中,通用分析可以为你的持续分析提供面向未来的保障。

显示 Python、Native、Kernel 和 Java 代码跟踪的火焰图

如今,许多企业都采用多语言编程 —— 也就是说,他们使用多种语言来构建应用程序 —— 而通用分析器是唯一可以跨所有这些语言构建整体视图的分析器。 这将帮助你寻找环境中的热点,引导你找到需要进行更深入性能分析的 “未知的未知因素”。 这可能是一个简单的利率计算,应该是高效且轻量级的,但令人惊讶的是,事实并非如此。 或者,它可能是一个比最初预期更频繁地重用的服务,导致每秒有数千个实例在你的环境中运行,使其成为效率提高的主要目标。

可视化你的影响

Elastic Universal Profiling 具有直观的 UI,可立即向你显示任何给定函数的影响,包括在 CPU 上执行所花费的时间以及成本和碳排放量。

任何功能的年化美元成本和二氧化碳排放量

最后,考虑到大多数生产环境中软件的复杂程度,更改代码很可能会对整个环境产生意想不到的影响。 该代码更改可能是由于推出了新功能或为了提高效率而进行的更改。 无论哪种情况,更改之前和之后的差异视图都将帮助你了解影响。

更高效的哈希函数的性能、二氧化碳排放和成本改进

让我们回顾一下

无论是从我们所工作的竞争异常激烈的商业环境的角度来看,还是从我们面临的地球气候变化的挑战来看,计算效率都是一个重要的话题。 提高效率可能是一项具有挑战性的工作,但如果不知道将努力的重点放在哪里,我们甚至无法开始尝试进行改进。 弹性通用分析旨在为每个企业提供计算效率的可见性。

你将如何在你的业务中使用 Elastic Universal Profiling?

  • 如果你是应用程序开发人员或站点可靠性团队的成员,Universal Profiling 将为你提供前所未有的应用程序可视性,不仅可以帮助你解决生产中的性能问题,还可以了解新功能的影响并提供最佳的用户体验经验。
  • 如果你参与云和基础设施财务管理和容量规划,Universal Profiling 将为你提供前所未有的可视性,让你了解业务运行的每行代码的单位成本。
  • 如果你参与企业的 ESG 计划,Universal Profiling 将为你提供前所未有的二氧化碳排放可视性,并开辟减少碳足迹的新途径。

这些只是几个例子。 如需更多想法,请阅读 AppOmni 如何从 Elastic 通用分析中受益。

你现在就可以开始使用 Elastic Universal Profiling!

本文中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。 当前不可用的任何特性或功能可能无法按时交付或根本无法交付。

原文:What is Elastic Universal Profiling? A continuous profiling solution for all | Elastic Blog

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

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

相关文章

【1++的Linux】之信号(一)

👍作者主页:进击的1 🤩 专栏链接:【1的Linux】 文章目录 一,关于信号二,深剖信号的产生1. 键盘组合建产生信号2.核心转储3. 系统调用接口产生信号4. 由软件条件产生信号5. 硬件异常产生信号 一,…

TSINGSEE青犀AI视频识别技术+危化安全生产智慧监管方案

一、背景分析 石油与化学工业生产过程复杂多样,涉及的物料易燃易爆、有毒有害,生产条件多高温高压、低温负压,现场危险化学品存储量大、危险源集中,重特大安全事故多发。打造基于工业互联网的安全生产新型能力,提高危…

storage数据存储问题,不能存undefined

这篇文章分享一下自己使用sessionStorage遇到的一个小问题,以后遇到要避坑。 需求是easyui表格的单元格编辑,点击保存的时候会结束当前行的编辑,然后修改editingId(当前编辑行记录的ID)。 待解决问题 如图&#xff0c…

操作系统的内存管理之虚拟空间

操作系统的内存管理,主要分为三个方面。 第一,物理内存的管理,相当于会议室管理员管理会议室。 第二,虚拟地址的管理,也即在项目组的视角,会议室的虚拟地址应该如何组织。 第三,虚拟地址和物…

vcomp140.dll丢失是什么意思,vcomp140.dll丢失这几个方法都能修复好

vcomp140.dll是什么? vcomp140.dll是一个动态链接库(Dynamic Link Library),它主要用于支持Microsoft Visual C 2015编程语言的运行。这个文件包含了编译器相关的函数和资源,对于使用Visual C 2015开发的程序和游戏来…

Android图形系统之HWComposer、ComposerHal、ComposerImpl、Composer、Hwc2::Composer实例总结(十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

一款Nacos漏洞自动化工具

1、参考GitHub - charonlight/NacosExploitGUI: Nacos漏洞综合利用GUI工具,集成了默认口令漏洞、SQL注入漏洞、身份认证绕过漏洞、反序列化漏洞的检测及其利用 0x01 前言 ​ 本工具已经集成Nacos常见漏洞的检测及其利用,工具为GUI版本,简单…

[迁移学习]DA-DETR基于信息融合的自适应检测模型

原文标题为:DA-DETR: Domain Adaptive Detection Transformer with Information Fusion;发表于CVPR2023 一、概述 本文所描述的模型基于DETR,DETR网络是一种基于Transformer的目标检测网络,详细原理可以参见往期文章:…

k8s 资源预留

KUBERNETES资源管理之–资源预留 Kubernetes 的节点可以按照 Capacity 调度。node节点本身除了运行不少驱动 OS 和 Kubernetes 的系统守护进程,默认情况下 pod 能够使用节点全部可用容量, 除非为这些系统守护进程留出资源,否则它们将与 pod 争…

创造产业链协同优势后,凌雄科技在DaaS行业转动成长飞轮

企业服务领域,一直存在一种共识:做好很难,但一旦服务模式跑通了,得到了市场的认可,要滚起雪球就会事半功倍。 重资产、重运营的DaaS(设备及服务)赛道,是个非常典型的细分领域。在这…

泡泡玛特首度跨界超跑品牌兰博基尼汽车,以潮流基因探索时空边界

近期,泡泡玛特携手兰博基尼汽车,于上海国际赛车场进行了一场玩味十足的赛道体验。25位兰博基尼车主,及多位汽车领域知名媒体人、kol到场参与。兰博基尼跑车巡游、专业车手驾驶的兰博基尼涂装赛车试乘、MEGA SPACE MOLLY 1000%/400%兰博基尼汽…

深入理解计算机系统CS213学习笔记

Lecture 01 1. 计算机表示数字 int 整数运算可能会出现错误,超过32位时会出现溢出。 float 浮点数不适用结合律,因为浮点数表示的精度有限。 根其原因,是用有限的位数表示无限的数字空间。 2.利用分层的存储系统,使程序运行更…

第三届字节跳动奖学金官宣开奖,13位优秀科研学子每人获10万奖学金

最近,第三届字节跳动奖学金正式公布了获奖者名单。 经过字节跳动技术专家团队层层评审,本届字节跳动奖学金共有来自北京大学、复旦大学、清华大学、上海交通大学、香港科技大学、浙江大学、中国科学技术大学(按拼音首字母排序)的 …

MyBatis-Plus返回getOne返回null疑惑

getOne返回null 问题描述分析过程总结 问题描述 在数据库建了一张表主要包括两个字段master_id和slave_id;主要的额外字段max_lots 默认值是null;当调用getOne进行查询是,返回是null 分析过程 总结

MFC String类的初始化学习

之前写过CString的用法; VC CString 编程实例图解_bcbobo21cn, cstring-CSDN博客 下面单独看一下CString的各种初始化方式; void CTest2View::OnDraw(CDC* pDC) {CTest2Doc* pDoc GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for nati…

Servlet 初始化参数(web.xml和@WebServlet)

1、通过web.xml方式 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://xmlns.jcp.org/xm…

三十九、CANdelaStudio实践-19服务(ReadDTCInformation)

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的19服务(ReadDTCInformation)编辑,欢迎…

【C++】C++11常见特性

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

基于静电放电算法的无人机航迹规划-附代码

基于静电放电算法的无人机航迹规划 文章目录 基于静电放电算法的无人机航迹规划1.静电放电搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用静电放电算法来优化无人机航迹规划。 …

电脑加密软件哪个好?电脑加密软件推荐

电脑是我们办公离不开的工具&#xff0c;而为了保护电脑数据安全&#xff0c;我们可以使用专业的电脑加密软件来进行加密保护。那么&#xff0c;电脑加密软件哪个好呢&#xff1f;下面我们就来了解一下。 文件加密——超级加密3000 想要安全加密电脑重要文件&#xff0c;我们可…