Windows常见性能计数器

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

-

Windows常见性能计数器
2022年4月14日发
(作者:欧阳衮)

Windows常见性能计数器

性能计数器(counter)是描述服务器或操作系统性能的一些数据指标。计数器在性能测试

中发挥着“监控和分析”的关键作用,尤其是在分析系统的可扩展性、进行性能瓶颈的定位

时,对计数器的取值的分析非常关键。但必须说明的是,单一的性能计数器只能体现系统性

能的某一个方面,对性能测试结果的分析必须基于多个不同的计数器。

与性能计数器相关的另一个术语是“资源利用率”。该术语指的是系统各种资源的使用状况。

为了方便比较,一般用“资源的实际使用/总的资源可用量”形成资源利用率的数据,用以

进行各种资源使用的比较。

性能测试之内存篇(windows)

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

·MemoryAvailableBytes

·MemoryPages/sec

AvailableBytes剩余的可用物理内存,单位是兆字节(参考值:>=10%)。表明进程当前可使

用的内存字节数。Pages/sec表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错

误而写入磁盘以释放工作集空间的页面数。

如果AvailableBytes的值很小(4MB或更小),则说明计算机上总的内存可能不足,或某

程序没有释放内存。如果Pages/sec的值为20或更大,那么您应该进一步研究页交换活动。

Pages/sec的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。

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

四个

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

PageFaults/sec

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

个页

位于内存的其他位置,这种错误称为软错误,用TransitionFault/sec来衡量;如果这个页位

于硬盘上,必须从硬盘重新读取,这个错误成为硬错误。硬错误会使系统的运行效率很快将

下来。PageFaults/sec这个计数器就表示每秒钟处理的错误页数,包括硬错误和软错误。

PageInput/sec

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

PageReads/sec

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

Pages/sec

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

必须同时监视AvailableBytes、Pages/sec和PagingFile%Usage,以便确定是否发生这种情

况。如果正在读取非缓存内存映射文件,还应该查看缓存活动是否正常。

CatheBytes

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

内存泄露

·MemoryAvailableBytes

·MemoryCommittedBytes

如果您怀疑有内存泄露,请监视MemoryAvailableBytes和MemoryCommittedBytes,以

观察内存行为,并监视你认为可能在泄露内存的进程的ProcessPrivateBytes、Process

WorkingSet和ProcessHandleCount。如果您怀疑是内核模式进程导致了泄露,则还应该监

视MemoryPoolonpagedBytes、MemoryPoolonpagedAllocs和Process(process_name)

PoolonpagedBytes。

privateBytes

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

检查过于频繁的页交换

由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足,这容易与

导致页交换的磁盘瓶颈混淆。因此,在研究内存不足不太明显的页交换的原因时,您必须跟

踪如下的磁盘使用情况计数器和内存计数器:

·PhysicalDisk%DiskTime

·PhysicalDiskeueLength

例如,包括PageReads/sec和%DiskTime及eueLength。如果页面读取操作速

率很低,同时%DiskTime和eueLength的值很高,则可能有磁盘瓶径。但是,

如果队列长度增加的同时页面读取速率并未降低,则内存不足。

要确定过多的页交换对磁盘活动的影响,请将PhysicalDiskc/Transfer和

MemoryPages/sec计数器的值增大数倍。如果这些计数器的计数结果超过了0.1,那么页

交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更多

的内存。

研究程序的活动

接下来,检查正在运行的程序导致的过多的页交换。如果可能,请停止具有最高工作集值的

程序,然后查看页交换速率是否有显著变化。如果您怀疑存在过多的页交换,请检查

MemoryPages/sec计数器。该计数器显示由于页面不在物理内存中而需要从磁盘读取的页

面数。(注意该计数器与PageFaults/sec的区别,后者只表明数据不能在内存的指定工作集

中立即使用。)

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

监视“处理器”和“系统”对象计数器可以提供关于处理器使用的有价值的信息,帮助您决

定是否存在瓶颈。需要包含下列内容:

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

该计数值用于体现服务器整体的处理器利用率,对多处理器的系统而言,该计数值体现的是

所有CPU的平均利用率。如果该值的数值持续超过90%,则说明整个系统面临着处理器方

面的瓶颈,需要通过增加处理器来提高性能。

要注意的是,由于操作系统本身的特性,在某些多CPU系统中,该数据本身并不大,但此

时CPU之间的负载状况极不均衡,此时也应该视作系统产生了处理器方面的瓶颈。

监视Processor%ProcessorTime、Processor%UserTime和%PrivilegedTime以获得详细

信息。

Processor%UserTime是指系统的非核心操作消耗的CPU时间,如果该值较大,可以考虑

是否通过优化算法等方法降低这个值。如果该服务器是数据库服务器,Processor%User

Time大的原因很可能是数据库的排序或是函数操作消耗了过多的CPU时间,此时可以考虑

对数据库系统进行优化。

SystemProcessorQueueLength用于瓶颈检测。

%TotalProcessorTime

系统中所有处理器都处于繁忙状态的时间百分比,对于多处理器系统来说,该值可以反映所

有处理器的平均繁忙状态,该值为100%,如果有一半的处理器为繁忙状态,该值为50%

FileDataOperati/sec

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

ProcessQueueLength

线程在等待分配CPU资源所排队列的长度,此长度不包括正在占有CPU资源的线程。如果

该队列的长度大于处理器个数+1,就表示处理器有可能处于阻塞状态(参考值:<=处理器个

数+1)

%ProcessorTime

CPU利用率,该计数器最为常用,可以查看处理器是否处于饱和状态,如果该值持续超过

95%,就表示当前系统的瓶颈为CPU,可以考虑增加一个处理器或更换一个性能更好的处理

器。(参考值:<80%)

%PriviliagedTime

CPU在特权模式下处理线程所花的时间百分比。一般的系统服务,进城管理,内存管理等一

些由操作系统自行启动的进程属于这类

%UserTime

与%PrivilegedTime计数器正好相反,指的是在用户状态模式下(即非特权模式)的操作所

花的时间百分比。如果该值较大,可以考虑是否通过算法优化等方法降低这个值。如果该服

务器是数据库服务器,导致此值较大的原因很可能是数据库的排序或是函数操作消耗了过多

的CPU时间,此时可以考虑对数据库系统进行优化。

%DPCTime

处理器在网络处理上消耗的时间,该值越低越好。在多处理器系统中,如果这个值大于50%

并且%ProcessorTime非常高,加入一个网卡可能会提高性能。

观察处理器使用情况的值

要测量处理器的活动,请查看Processor%ProcessorTime计数器。该计数器显示处理器忙

于执行非空闲线程所耗时间的百分比。

检查处理器使用时,请考虑计算机的角和所完成工作的类型。根据计算机进行的工作,较

高的处理器值意味着系统正有效地处理较重的工作负载或正在努力维持。例如,如果正在监

视用户的计算机,并且该计算机用于计算,计算程序可能容易使用100%的处理器时间。

即使这会造成该计算机中其他应用程序的性能受到影响,但可以通过改变负载来解决。

另一方面,在处理许多客户请求的服务器计算机中,100%左右的值表示这些过程在队列中,

正在等待处理器时间,并且造成瓶颈。如此持续高层次的处理器使用对服务器而言是无法接

受的。

考察处理器瓶颈

进程的线程所需要的处理器周期超出可用周期时,处理器瓶颈将逐步显示出来。可以建立较

长的处理器队列,并且系统响应会受到影响。处理器瓶颈两种常见的原因是CPU限制程序

和产生过多中断的驱动程序或子系统组件。

要决定是否由于对处理器时间的要求较高而存在处理器瓶颈,请查看SystemProcessor

QueueLength计数器。队列中包含两个或更多的项目则表明存在瓶颈。如果多个程序进程

竞争大多数处理器时间,安装更快速的处理器会提高吞吐量。如果正在运行多线程的进程,

附加处理器会有所帮助,但是请注意,附加处理器可能只有有限的益处。

此外,跟踪计算机的服务器工作队列当前长度的ServerWorkQueuesQueueLength计数器

会显示出处理器瓶颈。队列长度持续大于4则表示可能出现处理器拥塞。此计数器是特定

时间的值,而不是一段时间的平均值。

要决定中断活动是否造成瓶颈,请观察ProcessorInterrupts/sec计数器的值,该计数器测

量来自输入/输出(I/O)设备的服务请求的速度。如果此计数器的值明显增加,而系统活动

没有相应增加,则表明存在硬件问题。

也可以对生成中断的磁盘驱动器、网卡和其他设备活动的间接指示器监视Processor%

InterruptTime时间。

注意

要检测可能影响处理器性能的硬件问题,例如IRQ冲突,请观察SystemFileControl

Bytes/second的值。

监视多处理器系统

要观察多处理器计算机的效率,请使用下列附加计数器。

计数器说明

Process%ProcessorTime过程的所有线程在每个处理器上的处理器时间总和。

Processor(_Total)%ProcessorTime计算机中所有处理器的处理器活动的度量。

"[{y8_0此计数器采样间隔期间的所有处理器平均非空闲时间的总和,并用处理器数目除以

该和。51Testing软件测试网

t#e_5I:2y8@"a:X:Y

例如,如果所有处理器平均忙半个采样间隔,则显示50%。如果半数处理器忙整个间隔,

而其他的处理器空闲,则也显示50%。

Thread%ProcessorTime线程的处理器时间数

性能测试之磁盘篇(windows)

监测对象:PhysicalDisk

如果分析的计数器指标来自于数据库服务器、文件服务器或是流媒体服务器,磁盘I/O对这

些系统来说更容易成为瓶颈。

每磁盘的I/O数可用来与磁盘的I/O能力进行对比,如果经过计算得到的每磁盘I/O数超过

了磁盘标称的I/O能力,则说明确实存在磁盘的性能瓶颈。

下表给出了每磁盘I/O的计算公式:

RAID类型计算方法

RAID0(Reads+Writes)/umberofDisks

RAID1(Reads+2*Writes)/2

RAID5[Reads+(4*Writes)]/umberofDisks

RAID10[Reads+(2*Writes)]/umberofDisks

%DiskTime

表示磁盘驱动器为读取或写入请求提供服务所用的时间百分比,如果只有%DiskTime比较

大,硬盘有可能是瓶颈

AverageDiskQueueLength

表示磁盘读取和写入请求提供服务所用的时间百分比,可以通过增加磁盘构造磁盘阵列来提

高性能(<=磁盘数的2倍)

AverageDiskReadQueueLength

表示磁盘读取请求的平均数

AverageDiskwriteQueueLength

表示磁盘写入请求的平均数

AverageDisksec/Read

磁盘中读取数据的平均时间,单位是s

DiskBytes/sec提供磁盘系统的吞吐率。

决定工作负载的平衡

要平衡网络服务器上的负载,需要了解服务器磁盘驱动器的繁忙程度。使用PhysicalDisk%

DiskTime计数器,该计数器显示驱动器活动时间的百分比。如果%DiskTime较高(超过

90%),请检查PhysicalDiskCurrentDiskQueueLength计数器以查看正在等待磁盘访问的系

统请求数量。等待I/O请求的数量应当保持在不大于组成物理磁盘的主轴数的1.5到2

倍。

AverageDisksec/Transfer

磁盘中写入数据的平均时间,单位是s

计数器反映磁盘完成请求所用的时间。较高的值表明磁盘控制器由于失败而不断重试该磁

盘。这些故障会增加平均磁盘传送时间。一般来说,定义该值小于15ms最为优异,介于

15-30ms之间为良好,30-60ms之间为可以接受,超过60ms则需要考虑更换硬盘或硬盘的

RAID方式了

AverageDiskBytes/Transfer

值大于20KB表示该磁盘驱动器通常运行良好;如果应用程序正在访问磁盘,则会产生较

低的值。例如,随机访问磁盘的应用程序会增加平均Disksec/Transfer时间,因为随机传送

需要增加搜索时间。

性能测试之网络篇(windows)

监测对象:etworkInterface

网络分析是一件技术含量很高的工作,在一般的组织中都有专门的网络管理人员进行网络分

析,对测试工程师来说,如果怀疑网络是系统的瓶颈,可以要求网络仍有来写真进行网络方

面的检测。

etworkInterfaceBytesTotal/sec为发送和接收字节的速率(包括帧字符在内)。可以通过该

计数器的值判断网络连接速度是否是瓶颈,具体操作方法是用该计数器的值与目前的网络带

宽进行比较。

ByteTotal/sec

表示网络中接受和发送字节的速度,可以用该计数器来判断网络是否存在瓶颈(参考值:该

计数器和网络带宽相除,<50%)

性能测试之进程篇(windows)

查看进程的%ProcessorTime值

每个进程的%ProcessorTime反映进程所消耗的处理器时间。用不同进程所消耗的处理器时

间进行对比,可以很容易的看出具体是哪个进程在性能测试过程中消耗了最多的处理器时

间,从而可以据此针对应用进行优化。

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

可以用每个进程产生的页面失效(通过ProcessPageFailures/sec计数器获得)和系统的页面

失效(可通过MemoryPageFailures/sec计数器获得)的比值,来判断哪个进程产生了最多

的失效页面,这个进程要么是需要大量内存的进程,要么是非常活跃的进程,可以对其进行

中的分析。

了解进程的ProcessPrivateBytes

ProcessPrivateBytes是指进程所分配的无法与其他进程共享的当前字节数量。该计数器主要

用拉判断进程在性能测试过程中有无内存泄漏。

例如:对于一个IIS之上的web应用,我们可以重点监控inetinfo进程的PrivateBytes,如果

在性能测试过程中,该进程的PrivateBytes计数器值不断增加,或是性能测试停止后一段时

间,该进程的PrivateBytes仍然持续在高水平,则说明应用存在内存泄漏。

(备注:进程分析方法用到的计数器主要有:Process%ProcessorTime、PageFailures/sec、

PageFailures/sec、PrivateBytes)

相关链接:

①内存映射文件机制

内存映射文件是利用虚拟内存把文件映射到进程的地址空间中去,在此之后进程操作文件,

就像操作进程空间里的地址一样了,省去了读和写I/O的时间。

比如使用memcpy等内存操作的函数。这种方法能够很好的应用在需要频繁处理一个文件或

者是一个大文件的场合,这种方式处理IO效率比普通IO效率要高。

利用内存映射文件您可以认为操作系统已经为您把文件全部装入了内存,然后您只要移动文

件指针进行读写即可了。这样您甚至不需要调用那些分配、释放内存块和文件输入/输出的

API函数,另外您可以把这用作不同的进程之间共享数据的一种办法。运用内存映射文件实

际上没有涉及实际的文件操作,它更象为每个进程保留一个看得见的内存空间。至于把内存

映射文件当成进程间共享数据的办法来用,则要加倍小心,因为您不得不处理数据的同步问

题,否则您的应用程序也许很可能得到过时或错误的数据甚至崩溃。

内存映射文件本身还是有一些局限性的,譬如一旦您生成了一个内存映射文件,那么您在那

个会话期间是不能够改变它的大小的。所以内存映射文件对于只读文件和不会影响其大小的

文件操作是非常有用的。当然这并不意味着对于会引起改变其大小的文件操作就一定不能用

内存影射文件的方法,您可以事先估计操作后的文件的可能大小,然后生成这么大小一块的

内存映射文件,然后文件的长度就可以增长到这么一个大小。我们的解释够多的了,接下来

我们就看看实现的细节:

调用CreateFile打开您想要映射的文件。

调用CreateFileMapping,其中要求传入先前CreateFile返回的句柄,该函数生成一个建立在

CreateFile函数创建的文件对象基础上的内存映射对象。

调用MapViewOfFile函数映射整个文件的一个区域或者整个文件到内存。该函数返回指向映

射到内存的第一个字节的指针。

用该指针来读写文件。

调用UnmapViewOfFile来解除文件映射。

调用CloseHandle来关闭内存映射文件。注意必须传入内存映射文件的句柄。

调用CloseHandle来关闭文件。注意必须传入由CreateFile创建的文件的句柄。

-

Windows常见性能计数器

发布时间:2022-04-14 10:22:42
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 15 条评论,465人围观)
哈尔滨武警医院骨科V铁粉6 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
计数器在性能测试中发挥着“监控和分析”的关键作用
石家庄万达广场V铁粉2 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
Pages/sec的值很大不一定表明内存有问题
孕妇可以吃哈密瓜吗V铁粉27 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
也就是pageFault
90001V铁粉12 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
对性能测试结果的分析必须基于多个不同的计数器
达与璐V铁粉21 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
单一的性能计数器只能体现系统性能的某一个方面
南瓜子的药用价值V铁粉11 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
如果这个页位于内存的其他位置
农行企业网银V铁粉26 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
PageFaults/sec当处理器在内存中读取某一页出现错误时
虹桥机场去浦东机场V铁粉30 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
这种错误称为软错误
去除痘印V铁粉13 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
而可能是运行使用内存映射文件的程序所致
婚外遇V铁粉19 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
或某程序没有释放内存
中国北方工业集团公司V铁粉23 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
为了方便比较
mssql2005V铁粉23 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
(参考值:
android平板电脑V铁粉30 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
-2022年4月14日发(作者:欧阳衮)Windows常见性能计数器性能计数器(counter)是描述服务器或操作系统性能的一些数据指标
姚琳V铁粉6 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
与性能计数器相关的另一个术语是“资源利用率”

最近发表

随便看看

热门文章

标签列表