龙蜥利器:系统运维工具 SysAK的云上应用性能诊断 | 龙蜥技术

简介:本文从大量的性能诊断实践出发,来介绍 SysAK 在性能诊断上的方法论及相关工具。

文/张毅:系统运维SIG核心成员、SysAK 项目负责人;毛文安:系统运维 SIG 负责人。

系统运维既要业务稳定的运行,又要最大化的利用资源,因此对于应用性能的评估也是重要的一环,作为系统运维的利器,SysAK 自然少不了这方面的能力。但对于应用性能的诊断,有时比稳定性问题更难,非专业人员甚至有无从下手的感觉。本文从大量的性能诊断实践出发,来介绍 SysAK 在性能诊断上的方法论及相关工具。

SysAK 应用性能诊断方法

简而言之,SysAK 诊断应用性能的基本思路就是自顶向下并进行关联拓展。

自上向下即应用->OS->硬件,关联拓展则包括同级应用、系统影响、以及网络拓扑。说起来简单,但实施起来却是一个大工程。

1、应用画像

首先做的就是应用画像,要对应用的性能进行诊断,首先要对其进行画像,包括其业务吞吐、系统资源使用等,然后再根据画像中占比比较大的性能瓶颈进行逐一专项分析。具体来说,包括应用的并发数、运行和睡眠的统计。 并发数简单,统计业务任务数就行了,这个主要是为后面的资源使用作为参考。

1.1、运行统计

即对系统基础资源的利用进行分类统计,应用运行时基础资源占用就4类:

Cpu

通过 cpu 占用可知应用本身的吞吐是否高,并进一步通过 user/sys 的 cpu 占比可得知业务运行时更多的是在业务自身还是在内核资源的使用上。所以此处至少要包含运行时长、以及 user、sys 的各自比例。如果 sys 占比高,需要继续分析对应内核资源是否有异常情况,否则更多时候需要分析硬件资源上是否有瓶颈。

内存

通过内存的使用情况来判断内存的申请与访问是否是制约业务性能的因素。所以此处至少要包含内存分配总量、频率、缺页次数、跨 NUMA 节点访问次数和大小等的统计。

文件

通过文件访问的情况来判断文件 IO 是否是制约业务性能的因素。此处至少要包含文件读写频率、pagecache 命中率、平均 IO 时延等的统计。

网络

通过报文流量来判断网络是否是制约业务性能的因素,此处至少要包含流量统计、对端链接的网络拓扑等。

1.2、睡眠统计

如果应用运行周期内,睡眠时间占比很大,则很可能是影响业务性能的关键因素,此时就要分析睡眠的详细情况了。至少要包含三类行为的数据统计,包括具体行为的次数和时长:

主动睡眠:这类数据如果占比过高,则说明是应用自身行为。 用户临界资源竞争:这些数据如果占比过高,则需要优化应用。 内核资源等待:这类数据如果占比过高,则需要分析具体的系统内核资源瓶颈。 在有了应用画像以后,我们就对应用运行过程中的基本情况有了了解,如果发现瓶颈不在业务自身,那么就需要继续往下分析对应的系统资源或者硬件瓶颈了。

2、系统内核资源

系统内核资源制约应用性能的地方又可分为三大类:

2.1、干扰

一个服务器操作系统运行过程中,对应用运行的干扰源可能会很多,但干扰不一定会对业务造成影响,所以至少需要包含这些干扰源的频率和运行时间,来评估是否是关键因素。

至少需要包括以下干扰源的统计:

设备硬件中断

如果在业务运行过程中,某一类中断频率过高或者集中到某个 cpu,或者单次单次运行过过长,那么都都可能会影响到业务的性能,可以对中断进行打散绑定等操作观察效果。

系统定时中断

系统定时器过多,也可能会对业务的唤醒造成延迟,通常可以分析业务进程是否有大量的使用高精度定时器。

软中断

可能是网络流量是否有突发增加等。

内核线程

其他高优先级应用

2.2、瓶颈

系统内核资源种类繁多,应用模型不同,对内核资源的依赖也不同,所有瓶颈点无法完全覆盖,但至少需要包含几大类常见的内核资源的统计数据:

运行队列长度

这个可以表明是否业务进程/线程并发过多,或者是否绑核不合理等

fs/block 层时延

对于不同的文件系统或设备、IO 调度算法,可能会有不同的瓶颈点,通常需要进行分段统计时延来确定

内存分配延时

受内存水位、碎片的影响,内存分配的时延有时可能会很大

pagefault 时长与频率

内存缺页导致的内存请求、重映射、tlb flush 等对的开销是非常大的,如果频繁的进入到 pagefault 流程中,可以考虑从应用策略上进行优化,比如预分配内存池、使用大页等。

关键路径 kernel 锁的竞争

锁是不可避免的机制,kernel 态锁竞争通常会导致 sys 态的 cpu 升高,需要结合上下文进行具体分析。

2.3、策略

上述提到内核资源无法完全覆盖,但可以有另外一种方法去能观测一些数据,因为不同的内核策略可能有比较大的性能差异,所以可以尝试通过不同系统间的对比,找出配置的差异点。通常的系统配置采集如下:

内核启动参数

内核配置接口 sysctl/procfs/sysfs

内核模块差异

cgroup配置

3、虚拟化

当上述找不到瓶颈点时,或者我们想继续挖掘性能的剩余价值,通常就会到硬件这一侧,而目前业务部署在云上居多,所以在深入硬件层前,虚拟化层或者说主机侧也是绕不开的必要因素。对主机侧的性能分析,针对系统内核资源制约可以复用上述的方法,但对业务画像可以少做不少事,相对于应用业务,虚拟化这层的逻辑不会无限变化,我们可以从各个渠道了解到云厂商提供的虚拟化方案,目前主流的是 Linux kvm 方案。因此可以针对性的对 kvm 这个方案所所及到的技术点做特别分析。此处应该包含的统计包括:

qemu 线程的被抢占频率及时间、guest陷出频率及事件、qemu线程在host上运行的时间

通过这些来综合判断是否是由于虚拟化层带来的性能损失或者是否有改善的可能性。

4、硬件性能

最后,真正到了硬件层,到这里通常都是由于单纯从应用层或者系统层无法找到更多的优化空间了。其实又有两种思路,一种是看看硬件利用率的点,看能否反向调整应用,对硬件使用的热点减少依赖或者分散利用;另一种就是应用无法调整了,评估硬件的性能是否真正已到瓶颈。对于前者,又可以延伸出一套方法论来,比如 Ahmed Yasin 的TMAM,在 sysAK 中不做过多延伸,但仍然有必要的工作要做,除 cache、tlb miss、cpi 这些数据采集外,更关键的是怎么将这些数据结合应用进程的运行情况进行分析,比如同一 cpu 上的 cache 或带宽竞争多,是由于当前业务自身的程序设计,还是有其他进程存在争抢导致,对于争抢导致的可以通过绑核、rdt 等技术进行配合优化。

5、交互的应用环境

还没完,这里还少了一个拼图,现在绝大多数应用都不是单机的,交互的应用之间也会产生性能影响,因此在应用画像中,我们曾提到过网络连接的拓扑,就是用于此。我们可以将上述所有的性能诊断方法在和当前应用进行交互的对象上复制一遍。

总结

最后的最后,以一张大图来进行总结。

而图中涉及的工具将会在后续的实战篇中出现,敬请期待。

原文链接

本文为阿里云原创内容,未经允许不得转载。 

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

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

相关文章

以智能工具辅助报考决策,夸克发布2022年高考志愿趋势报告

1、夸克App推出高考信息服务产品,发布“暖芒计划”助学活动,为乡村考生免费提供“专家志愿辅导”和“志愿助力包” 2、报告数据显示:80后加入高考家长大军、海南大学最受欢迎、计算机类专业热度最高。 2022年高考落下帷幕,志愿填报…

Apache RocketMQ + Hudi 快速构建 Lakehouse

简介:基于RocketMQ和Hudi零代码构建Lakehouse架构,以及RocketMQ Connector & RocketMQ Stream助力ETL数据分析,为大家提供快速构建Lakehouse的技术方案和低运维成本实现实时计算的解决方案。 本文目录 背景知识大数据时代的构架演进Rock…

柔性产线的数字孪生加速器:Unity发布UMT工具包

数字化浪潮不仅深度改变了日常生活的样貌,也在不断改造工厂的运行机制,生产线的日趋智能化,几乎重构了我们对生产效率的想象。工业4.0带来的变革,既在真实世界与虚拟世界之间建立了高效链接,也改写了人与机器的关系&am…

混合云应用双活容灾实践

简介:本文会通过一个业务 Demo 案例,介绍混合云容灾建设的难点,以及如何基于 MSHA 来快速搭建应用双活架构并具备分钟级业务恢复能力。 作者:远跖 前言 越来越多的企业在数字化转型和上云进程中选择混合云的形态(云…

操作系统是如何保护自己的? CPU与保护模式

作者 | 陆小凤 在回答这个问题之前,你可能会首先想:为什么操作系统需要保护自己呢? 操作系统其实就是一个大管家,负责给应用程序搭建舞台,好让程序们过好自己的一生,但偏偏有不听话的程序可能想抢操作系统的…

如何快速调度 PTS 的百万并发能力

简介:压测是通过模拟用户行为对业务系统发起请求,测算出系统的承载能力,并对系统做一次全面的体检,压测后可根据压测表现优化系统瓶颈,防止出现线上故障。 作者:灵苒 在实际的业务场景中,压测…

架构师说低代码:走出半生,归来仍是“毒瘤”!

当今世界正在经历数字化与智能化的发展蜕变,其中软件开发技术作为推动数字化转型的必要支撑,成为企业变革的重要推手。云原生作为产业数字化的关键技术之一,催生出低代码等软件开发模式,让开发逐渐走向低门槛、迭代快、可扩展。今…

网关流控利器:结合 AHAS 实现 Ingress/Nginx 流量控制

简介:微服务的稳定性一直是开发者非常关注的话题。随着业务从单体架构向分布式架构演进以及部署方式的变化,服务之间的依赖关系变得越来越复杂,业务系统也面临着巨大的高可用挑战。 作者:涂鸦 微服务的稳定性一直是开发者非常关…

云钉一体加速,阿里云计算巢与钉钉深度融合、共建应用新生态

简介:云合计划再升级,“云钉一体”战略按下加速键。 1月13日,阿里云宣布云合计划再升级,计算巢与钉钉深度融合互通,实现一键上云、一键上钉钉,助力软件厂商更快地完成技术升级,更好地专注于自身…

DevStream 进入 CNCF 沙箱,探索云原生时代的高效 DevOps 实践

2022 年 6 月 15 日,云原生计算基金会 (CNCF) 宣布 DevStream 正式成为 CNCF 沙箱(Sandbox)项目。 DevStream 是一个开源的 DevOps 工具链管理器,可以通过一个简单的配置文件,将软件研发生命周期中各环节的 DevOps 工…

阿里云何万青:南坡VS北坡,阿里云高性能计算行业实践

简介:北坡模式:借助于云上大计算性能突破来提供HPC服务,切入的重点更加聚焦于云服务。 随着数字化转型的深入,行业应用对算力提出更高要求。为满足不同行业灵活的业务形态与计算需求,以云计算技术为服务模式创新的技术…

双引擎驱动Quick BI十亿数据0.3秒分析,首屏展示时间缩短30%

简介:在规划中,Quick BI制定了产品竞争力建设的三大方向,包括Quick(快)能力、移动端能力和集成能力。针对其中的产品“报表查看打开慢”“报表开发数据同步慢”等性问题开展专项战役——Quick战役,以实现展…

Quick BI产品核心功能大图(六)开放集成

简介:企业想要拥有领先的数据分析能力,自研往往需要投入巨大的人力和财力。 Quick BI作为唯一一个连续两年入选Gartner魔力象限的中国BI产品,具备强大的全链路开放集成能力,可以轻松的与企业原有系统匹配融合,帮助企业…

低复杂度 - 服务网格的下一站

作者 | Addo Zhang来源 | 云原生指北译者:作为一个曾经在新造车公司的基础架构团队任职,为支持公司的“互联网基因”和“数字化转型”落地了云原生基础设施平台,并在尝试采用服务网格未成的我来说,看到这篇文章深有感触。尤其是文…

ADBPGGreenplum成本优化之磁盘水位管理

简介:本文我们将通过一个实际的磁盘空间优化案例来说明,如何帮助客户做成本优化。 作者 | 玉翮 来源 | 阿里技术公众号 一 背景描述 目前,企业的核心数据一般都以二维表的方式存储在数据库中。在核心技术自主可控的大环境下,政企…

阿里云图数据库GDB V3引擎发布,加速开启“图智”未来

简介:无论是学术界还是产业界,都对图数据库有比较高的预期。Gartner发布的《2021年十大数据和分析技术趋势》中提到:“到2025年图技术在数据和分析创新中的占比将从2021年的10%上升到80%。”应用需求推动着技术的发展,在GDB V3的引…

阿里云EMR Remote Shuffle Service在小米的实践

简介:阿里云EMR自2020年推出Remote Shuffle Service(RSS)以来,帮助了诸多客户解决Spark作业的性能、稳定性问题,并使得存算分离架构得以实施,与此同时RSS也在跟合作方小米的共建下不断演进。本文将介绍RSS的最新架构,在…

Spring Boot Serverless 实战系列 | 性能调优

简介:Spring Boot Serverless 实战系列第四篇来啦,本文将向大家介绍如何对 Serverless 应用进行性能调优。 SpringBoot 是基于 Java Spring 框架的套件,它预装了 Spring 的一系列组件,让开发者只需要很少的配置就可以创建独立运行…

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

简介:本篇文章主要介绍 RocketMQ 的可观测性工具在线上生产环境的最佳实践。RocketMQ的可观测性能力领先业界同类产品,RocketMQ 的 Dashboard 和消息轨迹等功能为业务核心链路保驾护航,有效应对线上大规模生产使用过程中遇到的容量规划、消息…

30人的产研团队如何高效协同?

简介:工具选型及使用建议对于中小企业,基本都不会自己搭建服务器和机房进行部署,而是选择各大云平台,选择一款SaaS项目管理工具可以极大的降低运维成本。 作者介绍:以诺行CTO 刘自强 团队使用云效3年 团队协作需求 …