qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

性能测试系统计数器与硬件分析

性能计数器(Performance Counter),也叫性能监视器。一个人健康状况如何,我们通过对其做各项体检获得相关的状况指标,如血压、心跳,肺活量等。那么在做性能测试过程中,整个系统的软硬件进行监控也必不可少,监控所获得的数据也是我们分析系统性能的主要依据。

  在整个系统中,对于不同的软件和硬件,我们对其监控的指标也不一样,就像一个公司中的所有人员,其每个人的职责不同,评判和考核的标准也是不一样的。下面将从系统的各个方面进行分析。

 

操作系统性能计数器                                                                           

 

  操作系统监控器,主要监控操作系统级别上的系统性能表现,这里分析最常见的windows操作系统与Linux操作系统。

 

window 操作系统的主要性能计数器

Windows操作系统的性能监控:

 

Window系统下的计数器比较多,主要技术器如下:

 

Linux/UNIX 操作系统的主要性能计数器

 

  Linux系统的命令和UXIN的有些差别,在UNIX系统下的主要计数器监控命令是vmstatiostattopsarsag(图形方式,需要XServer 支持);而在linux中,没有isostat命令。另外他们的输出结果也稍有差别。

 

  上面罗列了windowslinux系统下的性能计数器,分析一个操作系统的性能,应该查看哪些指标。那么操作系统的载体是系统硬件。那么硬件的性能直接影响着操作系统的性能。下面就简单分析一下系统的硬件。CPU、内存、磁盘。

 

CPU分析                                                                                         

 

  CPU的性能对于计算机整体的性能起着主导作用。对于早期对计算机甚至直呼其CPU的型号,如 386 486、奔三,奔四。

  那么我们CPU性能最直接的评估就是查看其CPU工作频率,就是CPU的时钟频率,单位为是Hz。随着CPU的发展,主频由MHz现在的GHz

  (1GHz=1000MHz=1000000KHz=1000000000Hz

  处理器除了主频指标外,还有另外两个密切相关的概念:倍频与外频。外频是cpu的基准频率,单位是MHz。外频是CPU与主板之间同步运行的速度,而且目前的绝大部分计算机系统中外频与是内存与主板之间的同步运行速度,在这种方式下,可以理解为CPU的外频直接与内存相连通。实现两都的同步运行状态;倍频即主频与外频之间的倍数。

  主频 外频 倍数

 

如何真对CPU进行分析?

1)查看System\%Total Processor Time 性能计数器的计数值。

  该计数值用于体现服务器整体的处理利用率,对于多处理器来讲,该数值体现的是所有CPU的平均利用率。如果该数值大于持续大于90% ,表示CPU有可能存在平静。

2)查看每个CPUProcessor\%User Time 

  Processor\%User Time是指系统的非核心消耗的CPU时间,如果该值较大,可以考虑通过算法优化来降低该值。如果该服务器是数据库服务器,Processor\%User Time值大的原因很可能是数据库的排序或是函数操作消耗了过多的CPU时间,此时可以考虑对数据库进行优化。

3)查看Processor\%Processor Time 和 System\Processor Queue Length

  查看System\Processor Queue Length 计算器,当该计数器的值大于CPU数量的总数加1时,说明CPU产生了赌塞。但产生赌塞时,Processor\%Processor Time的值不一定很大,此时就必须查看CPU赌塞的原因。

4)查看%DPC Time 

     %DPC Time 是另一个需要关注的内容,该计数值越低越好。在多CPU系统中,如果该值大于50% 并且Processor\%Processor Time值非常高,则考虑加一个网卡来提高性能。

 

 

磁盘I/O分析                                                   

 

     硬盘应该是计算机硬件中发展最慢的设备,很多常见瓶颈都是由于硬盘的读/写速度慢导致的。提高硬盘读/写性能无非是提高转速、提高单碟容量,增加缓存和更新接口,因为传统的硬盘是物理旋转读写数据,所以转速的提高相当困难;而提高单碟容量也存在一写的技术瓶颈,1TB的单碟的容量想要突破还也需要时间。

  对于传统的温氏硬盘到现在速度也只能达到120MB/s的读取速度,这个速度还真对大文件的读写,而对于服务器大量4KB的小文件读/写速度,会惊人的下跌至1MB不到,而对应的IOPS(每秒磁盘的读/写次数)会低得可怜,大量的数据都在排队从硬盘上读取到内存中,再利用内存的超大带宽完成操作。这也是为什么内存大的系统比较快的原因。但内存的速度虽然比硬盘快得多,也有其致命的缺点,一旦断电,内存中的数据将全部丢失。

  IOPSInput/Output Per Second)每秒磁盘的输入/输出量(或读/写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位。

  另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读/写应用,则更关注吞吐量指标。

传统的温氏硬盘完成一个I/O请求所花费的时间包括 寻道时间、旋转延迟和数据传输时间三部分。

  * 寻道时间,是指将读写磁头移动至正确的磁道上所需要的时间。目前磁盘的平均寻道时间一般在3~15ms

  * 旋转延迟,是指盘片旋转将请求数据所在扇区移至读/写磁头下方所需要的时间。7200转速的磁盘,平均旋转言辞大于为60 * 1000/7200/2=4.