这篇文章是继上一篇“windows性能监视器常用计数器”之后再次介绍关于windows操作系统中的性能监视器。这次我们从软件测试的性能测试角度去看windows提供的性能监视器。

  性能计数器(counter)是描述服务器或操作系统性能的一些数据指标。计数器在性能测试中发挥着“监控和分析”的关键作用,尤其是在分析系统的可扩展 性、进行性能瓶颈的定位时,对计数器的取值的分析非常关键。但必须说明的是,单一的性能计数器只能体现系统性能的某一个方面,对性能测试结果的分析必须基于多个不同的计数器。

  与性能计数器相关的另一个术语是“资源利用率”。该术语指的是系统各种资源的使用状况。为了方便比较,一般用“资源的实际使用/总的资源可用量”形成资源利用率的数据,用以进行各种资源使用的比较。

  性能测试之内存篇(windows)

  要监视内存不足的状况,请从以下的对象计数器开始:

  · Memory Available Bytes

  · Memory Pages/sec

  Available Bytes剩余的可用物理内存,单位是兆字节(参考值:>=10%)。表明进程当前可使用的内存字节数。Pages/sec 表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集空间的页面数。

  如果 Available Bytes 的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。如果 Pages/sec 的值为 20 或更大,那么您应该进一步研究页交换活动。Pages/sec 的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。

  操作系统经常会利用磁盘交换的方式提高系统可用的内存量或是提高内存的使用效率。下列四个

  指标直接反映了操作系统进行磁盘交换的频度。

  Page Faults/sec

  当处理器在内存中读取某一页出现错误时,会产生缺页中断,也是 page Fault。如果这个页

  位于内存的其他位置,这种错误称为软错误,用Transition Fault/sec 来衡量;如果这个页位于硬盘上,必须从硬盘重新读取,这个错误成为硬错误。硬错误会使系统的运行效率很快将下来。Page Faults/sec这个计数器表示每秒钟处理的错误页数,包括硬错误和软错误。

  Page Input/sec

  表示为了解决硬错误而写入硬盘的页数(参考值:>=Page Reads/sec)

  Page Reads/sec

  表示为了解决硬错误而从硬盘上读取的页数。(参考值: <=5)

  Pages/sec

  表示为了解决硬错误而从硬盘上读取或写入硬盘的页数(参考值:00~20)

  必须同时监视 Available Bytes、Pages/sec 和 Paging File % Usage,以便确定是否发生这种情况。如果正在读取非缓存内存映射文件,还应该查看缓存活动是否正常。

  Cathe Bytes

  文件系统的缓存(默认为50%的可用物理内存)

  内存泄露

  · MemoryAvailable Bytes

  · Memory Committed Bytes

  如果您怀疑有内存泄露,请监视 MemoryAvailable Bytes 和 Memory Committed Bytes,以观察内存行为,并监视你认为可能在泄露内存的进程的 Process Private Bytes、Process Working Set 和Process Handle Count。如果您怀疑是内核模式进程导致了泄露,则还应该监视 Memory Pool Nonpaged Bytes、Memory Pool Nonpaged Allocs 和 Process(process_name) Pool Nonpaged Bytes。

  private Bytes

  进程无法与其他进程共享的字节数量。该计数器的值较大时,有可能是内存泄露的信号

  检查过于频繁的页交换

  由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足,这容易与导致页交换的磁盘瓶颈混淆。因此,在研究内存不足不太明显的页交换的原因时,您必须跟踪如下的磁盘使用情况计数器和内存计数器:

  · Physical Disk % Disk Time

  · Physical Disk Avg.Disk Queue Length

  例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。

  要确定过多的页交换对磁盘活动的影响,请将 Physical Disk Avg.Disk sec/Transfer 和 Memory Pages/sec 计数器的值增大数倍。如果这些计数器的计数结果超过了 0.1,那么页交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更多的内存。

  研究程序的活动

  接下来,检查正在运行的程序导致的过多的页交换。如果可能,请停 止具有高工作集值的程序,然后查看页交换速率是否有显著变化。如果您怀疑存在过多的页交换,请检查 Memory Pages/sec 计数器。该计数器显示由于页面不在物理内存中而需要从磁盘读取的页面数。(注意该计数器与 Page Faults/sec 的区别,后者只表明数据不能在内存的指定工作集中立即使用。)

  性能测试之处理器篇(windows)

  监视“处理器”和“系统”对象计数器可以提供关于处理器使用的有价值的信息,帮助您决定是否存在瓶颈。需要包含下列内容:

  Processor % Total Processor Time 获得处理器整体使用情况。

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

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

  监视 Processor % Processor Time、Processor % User Time 和 % Privileged Time 以获得详细信息。

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

  System Processor Queue Length 用于瓶颈检测。

  %Total Processor Time

  系统中所有处理器都处于繁忙状态的时间百分比,对于多处理器系统来说,该值可以反映所有处理器的平均繁忙状态,该值为,如果有一半的处理器为繁忙状态,该值为50%

  File Data Operations/sec

  计算机对文件系统进行读取和写入操作的频率,但是不包括文件控制操作

  Process Queue Length

  线程在等待分配CPU资源所排队列的长度,此长度不包括正在占有CPU资源的线程。如果该队列的长度大于处理器个数+1,表示处理器有可能处于阻塞状态(参考值:<=处理器个数+1)

  %Processor Time

  CPU利用率,该计数器为常用,可以查看处理器是否处于饱和状态,如果该值持续超过 95%,表示当前系统的瓶颈为CPU,可以考虑增加一个处理器或更换一个性能更好的处理器。(参考值:<80%)

  %Priviliaged Time

  CPU在特权模式下处理线程所花的时间百分比。一般的系统服务,进城管理,内存管理等一些由操作系统自行启动的进程属于这类

  %User Time

  与%Privileged Time计数器正好相反,指的是在用户状态模式下(即非特权模式)的操作所花的时间百分比。如果该值较大,可以考虑是否通过算法优化等方法降低这个值。如果该服务器是数据库服务器,导致此值较大的原因很可能是数据库的排序或是函数操作消耗了过多的CPU时间,此时可以考虑对数据库系统进行优化。

  %DPC Time

  处理器在网络处理上消耗的时间,该值越低越好。在多处理器系统中,如果这个值大于50%并且%Processor Time非常高,加入一个网卡可能会提高性能。