性能之巅:洞悉系统、企业与云计算
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 视角

性能分析有两个常用的视角,每个视角的受众、指标以及方法都不一样。这两个视角是工作负载分析和资源分析,可以分别对应理解为对系统软件栈自上而下和自底向上的分析,如图2.10 所示。

2.5 节会论述实施的策略,并对这两种视角做更详尽的论述。

img

图2.10 分析视角

2.4.1 资源分析

资源分析以对系统资源的分析为起点,涉及的系统资源有:CPU、内存、磁盘、网卡、总线以及之间的互联。执行资源分析的通常是系统管理员——他们负责管理物理环境资源。

操作如下。

● 性能问题研究:看是否某特定类型资源的责任。

● 容量规划:为设计新系统提供信息,或者对系统资源何时会耗尽做预测。

这个视角着重于使用率的分析,判断资源是否已经处于极限或者接近极限。对于某些资源类型,如CPU,使用率的指标是即有的。其他资源的使用率也可以通过即有的指标来进行计算。举个例子,通过将每秒发出和接收的数据量(吞吐量)与已知的最大带宽做比较就可以估算出网卡的使用率。

适合资源分析的指标如下:

● IOPS

● 吞吐量

● 使用率

● 饱和度

这些指标度量了在给定负载下资源所做的事情,显示资源的使用程度乃至饱和的程度。其他类型的指标,包括延时,也会被使用,来度量资源对于给定工作负载的响应情况。

资源分析是性能分析的常用手段。关于这个主题有着广泛的文档,诸如针对操作系统的“统计”工具:vmstat(1)、iostat(1)、mpstat(1)。当你阅读这类文档时,要知道这是一种视角,但并非唯一的视角,这很重要。

2.4.2 工作负载分析

工作负载分析(见图2.11)检查应用程序的性能:所施加的工作负载和应用程序是如何响应的。通常执行工作负载分析的是应用开发人员和技术支持人员——他们负责应用程序软件和配置。

img

图2.11 工作负载分析

工作负载分析的对象如下。

● 请求:所施加的工作负载

● 延时:应用程序的响应时间

● 完成度:查找错误

研究工作负载请求一般会涉及检查并归纳负载的特点,即归纳工作负载属性的过程(在第2.5 节中有更为详尽的内容)。对于数据库,这些属性包括客户端机器、数据库名、数据表,以及查询字符串。这些信息可能会有助于识别不必要的工作或者是不均衡的工作。即便是工作执行得很好的情况(低延时),通过检查这些属性,也可能会找到减少或消除所施加的工作负载的方法(最快的查询是你根本不需要做查询)。

延时(响应时间)是体现应用程序性能最为重要的指标。对于MySQL 数据库来说,是查询延时,对于Apache 来说,是HTTP 请求延时,诸如此类。在这些上下文里,术语“延时”所表达的和响应时间是一个意思(参见2.3.1 节)。

工作负载分析的任务包括辨别并确认问题——举个例子,通过查找超过可接受阈值的延时,来定位延时的原因(向下挖掘分析),并确认在修复之后延时会有提升。需要注意的是分析的起始点是应用程序。为了研究延时,通常需要深入到应用程序中,程序用的库,乃至操作系统(内核)。

一些系统问题可以通过研究事件完成的特征来识别,比如,错误码。虽然请求完成得很迅速,但返回的错误码会导致该请求被重试,从而增加了延时。

适合资源分析的指标如下。

● 吞吐量(每秒业务处理量)

● 延时

这些指标分别度量了请求量的大小和在其之下系统表现出的性能。