性能计数器及性能分析方法

操作系统计数器可用来监控操作系统级别上的系统性能表现。

3.1.1windows操作系统的主要计数器

参考《软件性能测试过程详解与案件剖析》第三章,3.1小节

3.1.2Unix/Linux操作系统的主要计数器

参考《软件性能测试过程详解与案件剖析》第三章,3.1小节

3.1.3内存分析方法

内存分析用于判断系统有无遇到内存瓶颈,是否需要通过增加内存等手段提高系统性能表现。

内存分析的主要方法和步骤:

(1)查看Memory/Available Mbytes指标(Linux 是Free(KB))

该计数值是描述系统可用内存的直接指标,在对系统进行操作系统级别的内存分析时,首先通过该指标建立一个初步印象,了解性能测试过程中系统是否仍然有足够的内存可用。

如果该指标数据比较小,系统可能出现了内存方面的问题,这时需要继续依据以下步骤进一步的分析

(2)注意Pages/sec、Pages Read/sec 和 Page Faults/sec(Linux是(page)si和(page)so)

操作系统经常会利用磁盘交换的方式提高系统可用的内存量或内存的使用效率。windows和Linux都提供了类似的方法来支持磁盘交换计数,而这3个指标直接反应了操作系统进行磁盘交换的频度。

如果Pages/sec的计数持续高于几百?很可能会有内存方面的问题产生,但Pages/sec的值很大不一定表明内存有问题,而可能是运行时用内存映射文件的程序所致。Page Faults/sec值表示每秒发生页面失效的次数,页面失效次数越多,说明操作系统向内存中读取的次数越多。此时还需要查看Pages Read/sec的计数值,该计数器的阀值为5,如果计数值超过5,则可以判断存在内存方面问题。

(3)根据Physical Disk计数器的值分析性能瓶颈。

对Physical Disk计数器的分析包括对Pages Read/sec 和%Disk Time及Average Disk Queue Length 的分析,如果Pages Read/sec很低,同时%Disk Time和Average Disk Queue Length的值很高,则可能有磁盘瓶颈。但是如果队列长度增加的同时Pages Read/sec并未降低,则是由于内存不足。

3.1.4处理器分析方法

处理器(CPU)也可能是系统的瓶颈,下面来看如何针对处理器进行分析,步骤如下:

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

该计数器用于体现服务器整体的处理器利用率,对多处理器系统而言,该计数体现的是所有CPU的平均利用率。如果该值的数值持续超过90%,则说明整个系统面临着处理器方面的瓶颈,需要通过增加处理器来提高性能。

要注意的是,由于操作系统本身的特性,在某些多CPU系统中,该数据本身并不大,但若CPU之间的负载情况极不均衡,也应该是做系统产生了处理器方面的瓶颈。

(2)查看每个CPU的Processor\%Processor Time 和Processor\%User Time和Processor\%Privileged Time。

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

(3)研究系统处理器瓶颈。

查看System\%Processor Queue Length计数器的值,当该计数器的值大于CPU的数量的总数加1时,说明产生了处理器阻塞。在处理器的%Process Time值很高时一般都伴随着处理器阻塞,但产生处理器阻塞时,Processor\%Process Time 计数器的值并不一定很大,此时就必须查找处理器阻塞的原因。

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

3.1.5磁盘I/O分析方法

磁盘I/O分分析方法介绍如下:

(1)计算每个磁盘的I/O数。

每磁盘的I/O数可用来与磁盘的I/O能力进行对比,如果经过计算得到的每个磁盘的I/O数超过了磁盘标称的I/O能力,则说明确实在磁盘的性能瓶颈。

(2)与ProcessorPrivileged Time 合并进行分析

如果在Physical Disk计数器中,只有%Disk Time值较大,其他值都比较适中,则硬盘可能是瓶颈。若几个值都比较大,且数值持续超过80%,则可能是内存泄漏。

(3)根据Disk sec/Transfer 进行分析

一般来说,定义Transfer数值小于15毫秒为优秀,介于15~30毫秒之间为良好,30~60毫秒之间为可以接受,超过60毫秒则需要考虑更换硬盘或硬盘的RAID方式了。

3.1.6进程分析方法

针对内存、处理器和磁盘I/O进行分析后,接下来看看进程的分析方法。

(1)查看进程的%Processor Time值

每个进程的%Processor Time值反映出进程所消耗的处理器时间。将不同进程所消耗的处理器时间进行对比,可以容易地看出具体哪个进程在性能测试过程中消耗了很多的处理时间,从而可以根据此针对应用进行优化。

(2)查看每个进程产生的页面失效

可以用每个进程产生的页面失效(通过ProcessPage Faulres/sec计数器活动)和系统的页面失效(通过MemoryPage Faulres/sec计数器获得)的比值,来判断乃个进程产生了最多的页面失效,该进程要么是需要大量内存的进程,要么是非常活跃的进程,可以对其进行重点分析。

(3)了解进程的ProcessPrivate Bytes

ProcessPrivate Bytes是指继承所分配的无法与其他进程共享的当前字节数量。该计数器主要用来判断进程在性能测试中有无内存泄漏。例如,对于一个IIS之上的web应用,可以重点监控inetinfo进程的Private Bytes,如果在性能测试过程中,该进程的Private Bytes计数器值在不断增加,或是性能测试停止一段时间,该进程Private Bytes仍然持续在较高水平,则说明应用存在内存泄漏。

3.1.7网络分析方法

Network Interface/Bytes Total/sec 为发送和接收字节的速率(包括帧字符在内)。可以通过该计数器的值判断网络连接速度是否是瓶颈,具体操作方法是用该计数器的值和目前网络的带宽进行比较

3.2应用服务计数器

最常用的服务器包括IIS、Tomcat、Weblogic、等J2EE应用服务器。

3.3数据库服务器计数器

参考《软件性能测试过程详解与案件剖析》第三章,3.3小节

原文地址:https://www.cnblogs.com/shen-qiang/p/11548108.html