Windows性能计数器的原理及运用 一、基础原理 1.1 预备知识 计数器作用:计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。 Windows性能计数器就是用来在各种系统资源上收集性能数据的一种机制。Windows 包含一组预定义的性能计数器,分别是:Page/sec、Avg.disk Queue Length、%Processor Time.。 Page/sec:表示为了解决硬错误而从硬盘上读取或写入硬盘的页数(参考值:00~20) Avg.diskQueue Length:表示磁盘读取和写入请求提供服务所用的时间百分比,可以通过增加磁盘构造磁盘阵列来提高性能(<=磁盘数的2倍) %Processor Time:CPU利用率,该计数器最为常用,可以查看处理器是否处于饱和状态,如果该值持续超过 95%,就表示当前系统的瓶颈为CPU,可以考虑增加一个处理器或更换一个性能更好的处理器。(参考值:<80%) 我们可以与它们进行交互;它们中有些存在于所有的 Windows 2000 计算机上,有些是为特定应用程序定制的,只存在于某些计算机上。每个计数器都与系统功能的特定区域相关。示例包括监视处理器的繁忙时间、内存使用或在一次网络连接过程中收到的字节数的计数器。 性能计数器监视计算机上“性能对象”的行为。这些对象包括如处理器、磁盘和内存之类的物理组件以及如进程和线程之类的系统对象。在 Visual Studio 和 .NET Framework SDK 中,这些性能对象显示为类别;与同一个性能对象相关的系统计数器被划分到指示它们的共同点的类别中。在创建 PerformanceCounter 组件的实例时,首先指示该组件将与之交互的类别,然后从该类别中选择要与之交互的计数器。 例如,Windows 上的一种计数器类别是“内存”类别。该类别中的系统计数器跟踪如可用字节和缓存字节等数据。要处理应用程序中的缓存字节,首先应创建 PerformanceCounter 组件的实例,再将它连接到“内存”类别,然后从该类别中选取适当的计数器(在此例中为“Cached Bytes”)。 在某些情况下,类别进一步细分到实例。实例跟踪关于类别相关对象的多个匹配项的数据。一定要注意,实例是应用到作为一个整体的类别,而不是单个的计数器。一个类别中的所有计数器都有为该类别定义的每个实例。例如,“进程”类别包含称为“空闲”和“系统”的两个实例。“进程”类别中的每个计数器都用这两种方式指定数据,显示关于空闲进程或系统进程的信息。 1.2 相关知识 对于系统性能计数器,默认包括许多监视对象,对于一般用户需要监测的对象有6类:System、Processor、Memory、Process、Physical Disk、Network Interface 监测对象:System(系统) %Total Processor Time:系统中所有处理器都处于繁忙状态的时间百分比,对于多处理器系统来说,该值可以反映所有处理器的平均繁忙状态,该值为100%,如果有一半的处理器为繁忙状态,该值为50%
File Data Operations/sec:计算机对文件系统进行读取和写入操作的频率,但是不包括文件控制操作
Process Queue Length:线程在等某公司CPU资源所排队列的长度,此长度不包括正在占有CPU资源的线程。如果该队列的长度大于处理器个数+1,就表示处理器有可能处于阻塞状态(参考值:<=处理器个数+1) 监测对象:Processor(处理器) %Processor Time:CPU:利用率,该计数器最为常用,可以查看处理器是否处于 饱和状态,如果该值持续超过 95%,就表示当前系统的瓶颈为CPU,可以考虑增加一个处理器或更换一个性能更好的处理器。(参考值:<80%) %Priviliaged Time:CPU在特权模式下处理线程所花的时间百分比。一般的系统服务,进城管理,内存管理等一些由操作系统自行启动的进程属于这类
%User Time:与%Privileged Time计数器正好相反,指的是在用户状态模式下(即非特权模式)的操作所花的时间百分比。 %DPC Time:处理器在网络处理上消耗的时间,该值越低越好。 监测对象:Memory(内存) Page Faults/sec:当处理器在内存中读取某一页出现错误时,就会产生缺页中断,也 就是 page Fault。如果这个页位于内存的其他位置,这种错误称为软错误,用Transition Fault/sec 来衡量;如果这个页位于硬盘上,必须从硬盘重新读取,这个错误成为硬错误。 硬错误会使系统的运行效率很快将下来。Page Faults/sec这个计数器就表示每秒钟处理的错误页数,包括硬错误和软错误。 Page Input/sec:表示为了解决硬错误而写入硬盘的页数(参考值:>=Page Reads/sec) Page Reads/sec:表示为了解决硬错误而从硬盘上读取的页数。 Page/sec:表示为了解决硬错误而从硬盘上读取或写入硬盘的页数(参考值:00~20) Available Mbytes:剩余的可用物理内存,单位是兆字节(参考值:>=10%) Cathe Bytes:文件系统的缓存(默认为50%的可用物理内存) 监测对象Process(进程) privateBytes:进程无法与其他进程共享的字节数量。该计数器的值较大时,有可能是内存泄露的信号 Work set:最近处理线程使用的内存页 监测对象:Physical Disk(物理磁盘) %DiskTime:表示磁盘驱动器为读取或写入请求提供服务所用的时间百分比,如果只有%Disk Time比较大,硬盘有可能是瓶颈 AverageDisk Queue Length:表示磁盘读取和写入请求提供服务所用的时间百分比,可以通过增加磁盘构造磁盘阵列来提高性能(<=磁盘数的2倍) AverageDisk Read Queue Length:表示磁盘读取请求的平均数 AverageDisk write Queue Length:表示磁盘写入请求的平均数 AverageDisk sec/Read:磁盘中读取数据的平均时间,单位是s AverageDisk sec/Transer:磁盘中写入数据的平均时间,单位是s 监测对象:Network Interface(网络接口) Byte Total/sec:表示网络中接受和发送字节的速度,可以用该计数器来判断网络是否 存在瓶颈(参考值:该计数器和网络带宽相除,<50%) 二、Processor和Memory计数器监视系统的使用 2.1 操作过程与步骤 查看系统性能计数器 第一步:我们可以依次展开:开始—>>设置—>>控制面板—>>管理工具,然后在管理工具里双击运行“性能”。如图2-1所示 图2-1 系统性能计数器 第二步:查看系统性能计数器工具栏。如图2-2所示 图2-2 查看工具栏 添加指定监视对象计数器 添加Processor计数器,监视处理器运行情况并分析 第一步:点击工具栏的“新建计数器集”或单击“清除计数器”三下,新建一个计数器集或清除现有的。 第二步:在弹出的“添加计数器”对话框中,在计算机对象栏,默认选择是本地计算。然后在性能对象栏下拉菜单中选择“Processor”对象;在计数器选择列表中,选择“%Processor Time”。最后单击“添加”如图2-3所示 图2-3 添加Processor计数器 第三步:完成Processor计数器添加后,在性能主程序中可看到当前系统处理器运行状况。如图2-4所示 图2-4 查看Processor计数器 图2-4中,正中为计数器运行情况,中间的垂直绝色直线为时间轴,单位为“S”,周期为1分钟,位于时间轴两侧的红色波浪线为Processor运行指标。最下方为计数器说明。例出了当前运行的计数器名称指标线颜色等。由上图可可以分析出:位于时间轴最左边和时间轴右边的Processor指标线紧贴峰值“100”,说明在上一分钟,处理器使用率达到100%,时间轴右边Processor指标线紧贴峰值,并运行一段时间,说明当时系统小卡一会儿。在稍后恢复正常(可由当前时间轴左侧看出,因为Processor指标线已经贴近0)。 添加Momory计数器,监视内存占用情况 第一步:点击工具栏的“新建计数器集”或单击“清除计数器”三下,新建一个计数器集或清除现有的。 第二步:在弹出的“添加计数器”对话框中,在计算机对象栏,默认选择是本地计算。然后在性能对象栏下拉菜单中选择“Memory”对象;在计数器选择列表中,选择“Page/sec”。最后单击“添加”如图2-5所示 图2-5 第三步:完成Memory计数器添加后,在性能主程序中可看到当前系统处理器运行状况。如图2-6所示 图2-6 查看Memory计数器 由上图可以看出:Memory指标线紧贴底线0,说明此时系统内存占用率,非常低,运行程序非常少。一般情况下需要对多项计数器进行综合分析,方能得到准备的分析报告。 |