【软件性能测试过程详解与案例剖析-读书笔记(三)】

本文详细解读Windows操作系统中关键计数器,如内存可用量、磁盘交换、处理器使用率等,指导用户进行内存和处理器性能分析,并提供优化建议。涉及Pages/sec、PageFaults/sec、Processor%等指标,以及Linux系统的对应指标对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows操作系统主要计数器

  • Memory Avaliable Mbytes 可用物理内存

  • Pages/sec 表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘,以释放工作集空间的页面数
  • Pages Read/sec 页的硬故障,Pages/sec的子集,为了解析对内存的引用,必须读取页文件的次数。阀值为5,数值越低越好。大数值表示是磁盘读而不是缓存读
  • Page Faults/sec 此值为处理器中的页面错误的计数。当进程引用特定的虚拟内存页,该页不在其主内存的工作集当中时,将出现页面错误。如果某页已经位于主内存中,或者它正在被共享该页的其他进程所使用,则页面错误不会导致该页从磁盘中提取出。
  • Cache Bytes 文件系统缓存(File System Cache),默认情况下为50%的可以物理内存
  • Process %Processor Time 被处理器消耗的处理器时间数量。如果是专用于某种特定应用(例如数据库服务器或应用服务器),则可用应用相关进程的%Processor Time进行衡量,此时,可接受的上限一般不超过85%
  • Page Faults/sec 将进程产生的也故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响
  • Work set 处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阀值时,页面就会被清除出工作集。
  • Private Bytes 此进程所分配的无法与其他进程共享的当前字节数量。如果系统性能随着时间而降低,则此计数器可以是内存泄露的最佳指示器
  • Processor %Processor  Time 如果该值持续超过95%,则表明CPU是瓶颈。可以考虑增加一个处理器或者更换一个更快的处理器。
  • %User Time 非内核操作耗费的CPU时间。一般来说,如果系统中使用了大量的算法或者复杂的计算操作,该值会比较大。
  • %Privileged Time CPU内核时间是在特权模式下处理线程执行代码所花时间的百分比
  • %DPC Time CPU消耗在网络处理上的时间,此值越低越好。
  • Physical Disk %Disk Time 指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比
  • Average Disk Queue Length 指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。该值应不超过磁盘数的1.5-2倍。要提高性能,可增加磁盘。注意:一个Raid Disk实际有多个磁盘
  • Average Disk Read/Write Queue Length 指读取(写入)请求(列队)的平均数。
  • Disk Reads(Wirtes)/sec 物理磁盘上每秒钟磁盘读、写的次数。两者相加,应小于磁盘设备最大容量。
  • Average Disk Transfer/sec 指以秒计算的在磁盘上写入数据的所需平均时间
  • Network Interface Bytes Total/sec 为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和网络带宽比较。
  • System %Total Processor Time 系统上所有处理器都忙于执行非空闲线程的平均时间的百分比,该值反映了用于有用作业上的时间的比率。对单处理器系统来说,该值很容易理解;对于多处理器系统来说,该值体现了所有处理器的平均繁忙程度。例如,如果所有处理器都繁忙,此值为100%,如果有一半的处理器繁忙,另一半空闲的话,此值为50%。
  • File Data Operations/sec 计算机对文件系统设备执行读取和写入操作的速率。本计数器的计数不包括文件控制操作。
  • Processor Queue Length 线程单元中的处理器队列的即时长度。所有处理器都使用单一队列(线程在该队列中等待处理器进行循环)。此长度不包括当前正在执行的线程。一般情况下,如果处理器队列的长度一直超过服务器上可用处理器的总数量+1,则可能表示处理器堵塞。

Unix系统/Linux系统主要计数器

 

 

 性能分析方法

1、内存分析

1)查看Memory\Available Mbytes指标。

  这个计数器是描述系统可用内存的直接指标,在对系统进行操作系统级别的内存分析时,首先通过这个指标建立一个初步的印象,了解性能测试过程中系统是否仍然有足够的内存可用。
如果这个指标的数据比较小,系统可能出现了内存方面的问题。

在unix/linux系统中,对应的指标是Free

2)Pages/sec 、 Pages Read/sec 和Page Faults/sec指标

  操作系统经常会利用磁盘交换的方式提高系统可用的内存量或内存的使用效率。这三个指标直接反映了操作系统进行磁盘交换的频度。

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

对应的指标是(page)si 和  (page) so

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

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

对应指标是Read是(Writes)per sec、percent of time the disk is busy 和Average number of transactions waiting for service

2、处理器分析方法

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

  此值体现服务器整体的处理器利用率。对多处理系统而言,体现的是所有CPU的平均利用率。如果该值持续超过90%,则说明整个系统面临着处理器方面的瓶颈,可以增加处理器来提高性能。在某些多CPU系统中,该数据本身并不大,但是CPU之间的负载状态很不均衡,也可以视为系统产生了处理器方面的瓶颈。

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

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

3)研究系统处理器瓶颈

  查看System\Processor Queue Length计数器的值,当大于CPU总量+1时,说明产生了处理器堵塞,在处理器的%Process Time值很高时一般都伴随着处理器堵塞。反之则不然,此时必须查找处理器堵塞的原因。

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

3、磁盘I/O分析方法

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

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

每磁盘的I/O的计算方法
Raid类型计算方法
Raid0(Reads+Writes)/Number of Disks
Raid1(Read+2*Writes)/2
Raid5(Read+4*Writes)/Number of Disks
Raid10(Read+2*Writes)/Number of Disks

2)与Processor\Privileged Time组合进行分析

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

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

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

4、进程分析方法

1)查看进程的%Processor Time值

  该值反映进程消耗的处理器时间。不同进程进行对比,可以轻易看出具体哪个进程在测试过程中消耗了最多的处理器时间,从而据此针对应用进行优化。

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

  Process\Page Failures/sec与Memory\Page Failures/sec的比值,判断哪个进程产生了最多的页面失效,该进程要么是需要大量内存的进程,要么是非常活跃的进程,可以对其进行重点分析。

3)了解进程的Process\Private Bytes

  该值指进程所分配的无法与其他进程共享的当前字节数量,主要用来判断进程在性能测试过程中有无内存泄露。例如一个在IIS上的Web应用,如果测试过程中,进程的Private Bytes计数值不断增加或是测试停止一段时间后,该值仍然持续在高水平,则说明应用存在内存泄露。

  PS:在Unix/Linux系统中,对应的指标是Resident Size。

5、网络分析方法

  一般的公司都有专门的网络管理人员,网络分析是门技术活,此处仅描述Network Interface\Bytes Total/sec的值。Network Interface\Bytes Total/sec为发送和接收字节的速率(包括帧字符),可以通过该计数器的值和目前网络的带宽进行比较来判断网络连接速度是否是瓶颈。

linux监控命令

Linux系统监控命令详解 - 简书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值