Date

原文Linux System and Performance Monitoring,作者Darren Hoch。

1.0 性能监控介绍

性能调优是一个寻找系统瓶颈并调节操作系统以消除这些瓶颈的过程。许多系统管理员认为性能调优就像按菜谱做菜一样:简单设置几个系统参数就可以解决一个问题。其实不是这样的,性能调优是在调节操作系统的各个子系统,以期在他们之间取得一种平衡,达到所需的最佳性能。这些子系统包括:CPU、内存、 IO、网络。

这些子系统之间高度依赖,其中任意一个子系统出现使用瓶颈都很可能导致其他子系统出现问题。比如:

  • 大量的内存读入请求会塞满内存队列
  • 大量的网络吞吐能够耗尽CPU资源
  • 为了保持内存队列空闲可能会耗尽CPU资源
  • 大量内存到磁盘写请求可能耗尽CPU和IO资源

为了调优一个系统,首先必须定位到瓶颈在哪里。有时候看起来是某个子系统出现了问题,但实际可能是另外一个子系统过载引起的。

1.1 判断应用的类型

为了理解从哪里开始调优性能,最重要的是先分析和理解一个系统的表现。应用一般被分为两类:

  • IO型:IO型应用会消耗大量的内存及其下的存储系统,这是因为IO型的应用会(在内存中)处理大量的数据。IO型的应用一般来说不会消耗太多的CPU和网络资源(除非存储系统是构建在网络之上的)。IO型的应用一般只使用CPU来产生一个IO请求然后就进入睡眠状态了。数据库通常被认为是一个的IO型应用。
  • CPU型:顾名思义,CPU型应用会消耗大量CPU资源。CPU应用需要消耗CPU资源来完成一些批处理工作或者数学运算。大容量的web服务器、邮件服务器以及各种类型的渲染服务器通常被认为是CPU型的应用。

1.2 设定基线数据

因为对系统的预期和定制可能不同,系统性能表现的好坏不能一概而论。因此,先用弄清一个系统的性能预期才能判断该系统是否有性能问题。所以我们需要先设定一个基线数据,即先统计一个可接受性能状态下各项指标的数据。以后可以用该数据来做性能对比。

下面是一个系统基线和高利用率的性能数据对比示例:

image

image

看表示CPU空闲率的最后一列(id)我们可以知道基线的CPU空闲率在79%-100%之间。而在第二个图片中我们看到CPU资源没有空闲,被100%占用了。下面需要做的就是判断如此高的CPU占用率是不是预期中的了。