如果要查看系统的内存占用、CPU占用等性能信息,大家通常会想到Windows的任务管理器,不过在Windows 2000/XP中还有一个功能更为强大的工具,可以查看更为详细的系统性能信息。通过这些数据可以了解系统的工作状态以及资源的使用情况,而且它还具备日志记录和警报功能。根据日志记录可以诊断系统性能问题,从而优化系统。通过警报功能则可以监视系统中的性能数据,当达到指定条件时及时通知用户,可谓是电脑的“火警”监测器(下面主要以Windows XP为例,Windows 2000基本相同)。

打开“火警”监测器
单击“控制面板→管理工具→性能”,或在开始菜单“运行”栏中输入“Perfmon.msc”即可打开系统性能管理工具,在左边可以看到功能分为“系统监视器”和“系统日志和警报”两大模块。

系统监视器——透过现象看本质
1.理解重要概念
系统监视器以图形方式实时显示出指定系统性能数据。在使用前,首先需要理解一些概念的含义。
(1)性能对象:所谓性能对象,就是指影响系统性能表现最关键的几个部件:CPU、内存、硬盘等。Windows XP从它们那里获得性能数据。要监视系统状态,首先就要选择这些对象。
(2)性能计数器:上面提到的关键部件的性能随时都在变化,是动态的数据,所以必须有一台“摄像机”随时监控它们,并把记录下来的性能表现随时回放给我们。每个性能对象的计数器就扮演着这样的角色,每个计数器用于描述与性能有关的特定方面的数据。为了统一衡量标准,所以性能数据都以具体数值来表示。例如,“Memory”(内存)对象提供的“Pages/sec”(分页/秒)计数器跟踪虚拟内存读取和写入速度,也就是每秒处理的分页数。

什么是分页(Page)?
还记得我们今年第5期《虚拟内存到底应该怎么设?》吗?里面介绍了“Page”这个概念,再让我们一起复习一下吧:为了便于管理和存放数据,Windows会将物理内存(RAM)与虚拟内存分割成许多小块,称为Page(分页),每个Page为4KB,它也是内存在Windows系统中的单位,每个Page都有编号。程序运行时,系统就会将该程序所需文件先从硬盘调入并保存到这些内存分页中,之后要用那个文件,只需指明文件所在相应分页的编号即可,调用起来非常方便。Windows 2000/XP的虚拟内存文件Pagefile.sys被称为分页文件(或页面文件)。

2.如何阅读监视器中的数据
在Windows XP中,系统监视器默认会装入三个性能计数器:“Pages/sec”(内存分页/秒)、“Avg. Disk Queue Length”(磁盘访问序列的平均值)和“% Processor Time”(处理器执行有效线程时间的百分比)。它们分别以黄、蓝、绿三种颜色的线条来表示。在窗口右边的图表中可以看到实时的计数器曲线图表(单击工具栏中的按钮切换成直方图或者报表显示),图表中的红色竖线在不断向右移动,它表示图表的更新过程。在下面的列表框中显示了三个计数器的详细资料,包括计数器所属的性能对象以及所属电脑信息,选中某个计数器,然后单击工具栏中的“突出显示”按钮,可以让该计数器的曲线在图表中以粗白线的形式显示出来,更便于观察(见图1)。

windows 性能监视器_性能 windows

 

三个关键性能计数器
★“Pages/sec”(内存分页/秒):主要用来表示平均每秒从虚拟内存中进行读取和写入的内存分页数。应用程序运行时,并没有把全部内容都加载到内存中,而是当内存中没有所需信息时才会到硬盘中调用。调用的内存分页越多、越频繁,系统性能就越差。
★“Avg. Disk Queue Length”(磁盘访问序列的平均值):这个计数器的功能实际上用于多个物理磁盘共存的时候,此时磁盘性能会超过单个硬盘的性能,如果你安装有多块硬盘,那么这个计数器有时会显示出100%(甚至更高)的状态。
★“%Processor Time”(处理器执行有效线程时间的百分比):它反映的是CPU实际花费在有效线程执行和请求服务处理上的时间,用100%减去该计数器的读数就是系统处于空闲状态的时间。CPU不像收款员,它不会干坐在那里等待下一个任务的到来,而必须总有一些事情去做。就像我们打开电脑,不管是否进行操作,它的电源线上始终有电流流过,为了保证CPU始终有事可做,当它没有其他任务时,Windows便为它准备了另一件事,就是调用“空闲进程”(也就是我们以前曾经介绍过的“System Idle Process”,在系统没有什么操作时,它常常会显示为99%或100%)。实际上,系统在计算处理器时间时,并不是对每个不同的线程运行时间进行统计,而只是对空闲进程的运行时间进行计算,然后只要简单地用100%减去空闲进程的时间,就得到了“%Processor Time”。

下面我们通过一个实例来了解一下系统监视器在内存分析中的应用。
实例1:我的电脑需要增加内存吗?
内存使用情况是影响系统性能的最重要因素。当内存不足时,就会使用系统页面文件,虽然这样可以使系统得到更多可用内存,但毕竟硬盘速度和内存速度相差很多,频繁读取和写入页面文件,会降低系统性能。通过系统监视器,可以观察到系统内存不足以及页面文件的使用情况,从而指导你决定是否该添加物理内存。
添加计数器
首先要添加一个“Memory”对象的“Available MBytes”(可用内存数)计数器。在图表中右击,选择“添加计数器”打开对话框,选中“使用本地计算机计数器”选项,并在下面的“性能对象”下拉框中选择“Memory”对象。下面会列出该对象的性能计数器,选中“Available MBytes”后单击“添加”按钮(见图2)。单击“说明”按钮可查看该计数器的功能描述。新添加的计数器会显示在主界面下的计数器列表中,不过默认的线条颜色可能会与已经存在的计数器一样,这时可以右击“Available MBytes”计数器,选择“属性”,在打开的对话框中“颜色”下拉框中选择其他颜色即可。

windows 性能监视器_性能 windows_02

分析计数器
“Available MBytes”计数器表明了当前可用的内存字节数,如果它的值小于5MB,说明物理内存可能不足,或某些程序没有释放内存。这里还需要结合列表中已经存在的“Pages/sec”计数器进行综合分析。该计数器代表页面文件的交换速度,如果“Pages/sec”的值为20或更大,表明系统使用内存页面文件比较频繁,这时可尝试退出那些大内存占用程序,并查看“Pages/sec”计数器,看内存页交换速率是否有显著变化,如果变化明显,说明内存不足的可能性极大,需要添加内存。
小提示
系统监视器默认的三个计数器无法直接删除,但它们会降低监视器启动的速度,如果要让监视器启动时不装入任何计数器,可以打开Windows\system32目录,取消“perfmon.msc”文件的只读属性,然后重启性能管理工具,选中要删除的计数器,单击工具栏中“删除”按钮,然后选择菜单“文件→保存”,即可将修改后的“perfmon.msc”文件保存到磁盘,再次启动时,就不会出现被删除的计数器了。通过此方法你也可以定制自己需要的启动计数器。

3.其他常用性能计数器

小提示
就像任何程序一样,系统监视器本身也要占用一定资源。它通常会使用最少5MB内存和1%~5%的CPU时间。当然,磨刀不误砍柴功,这点代价换来对系统的了解,还是值得的。

实例2:软件和硬件,到底谁是元凶?
有些朋友会发现自己的电脑配置并不低,但用起来感觉却很慢,这时利用性能监视器,可以比较轻松地找出问题到底出在硬件还是软件上。下表是常用的计数器,如果数值超过后面的“查看值”,则需要关注了。
基本计数器
对象 计数器 查看值
Processor %Preocessor Time(处理器时间) >80%
Physical Disk %Disk Time(磁盘时间) >80%
Memory Pages/sec(分页/秒) >12

(1)快速识别硬件故障
对于硬件故障,原因和现象比较复杂,一般不好判断。这里介绍一个简单的识别方法:在Processor对象下面分别建立“%Interrupt Time”和“%Processor Time”两个计数器。运行这个计数器一段时间,看看这两个计数器在同一时间是否都比较高(超过80%),如果都高,那么很可能是硬件问题。
一般来说,如果系统本身比较老或刚搬动过,那么很可能是电脑中的插卡松动,需要插紧,同时还有机箱中灰尘过厚也会引发硬件问题;也可能是硬件驱动程序有问题,需要更新;或者硬件存在中断或DMA冲突;存在一些比较老的设备,比如:ISA卡等。
如何查找有问题的硬件呢?如果发现两个计数器同时都比较高,可再观察正在进行的操作,比如:正在听音乐,那么可能就是声卡的问题了。
(2)捉出软件“罪犯”
如果排除了硬件故障,就要从软件方面找原因了。按照同样方法,可以建立一个“%Processor Time”的计数器,在窗口右侧选择要监视的进程项目。按照这样的方法,把怀疑有问题的进程依次监视起来,然后就可以用曲线图查看了。比如,我们怀疑Word、QQ、Photoshop以及一款杀毒软件是系统性能下降的原因,就分别监视这几个软件的进程,一般和他们主程序的名称是一致的。
监视开始后,可以在曲线图上看到这几个进程使用CPU时间的走势,如果有某个程序一直在曲线图的上层,如超过80%以上,那么它是影响性能的主要原因。应该尽快关闭这个进程,重启电脑,看看能否解决问题,如果不能,则应该安装补丁程序或更换到最新版本。
小提示
根据我们的经验,16位程序往往会在很大程度上影响系统性能,如果在任务管理器的“进程”列表中看到“NTVDM”和“WOWEAEC.exe”,那么可以确定当前有16位程序在运行。

性能日志和警报——系统状态的晴雨表
在主界面左边展开“性能日志和警报”节点,可以看到3个子模块:计数器日志、跟踪日志和警报。下面通过两个实例来了解其具体使用。
实例1:通过计数器日志设置最佳页面文件
我们知道,页面文件(也就是常说的虚拟内存)的大小是影响系统性能的重要因素。无论是系统自动分配还是公式化的1.5倍内存设置,都不是最优的设置方法,通过计数器可以观察到系统真实的页面文件使用情况。不过在系统监视器中只能简单地查看实时数据,而通过计数器日志记录功能则可以提供一个长时间的页面文件数据报告。可根据数据分析系统对页面文件的需求,做出合理设置。
首先要设定一个512MB的大页面文件。打开“控制面板→系统→高级”选项卡,单击“性能”中的“设置”按钮,在打开的对话框中单击“高级”选项卡,点击“更改”按钮,选择“自定义大小”选项,并指定页面文件的“初始大小”和“最大值”均为“512”MB,然后单击“设置”按钮,重启系统使新页面文件生效。
决定页面文件的大小,就要监视系统对当前这个页面文件的使用情况,这需要先添加一个计数器。在性能管理工具中右击左边的“计数器日志”,选择“新建日志设置”,输入名称“页面文件”后回车,出现计数器设置对话框。在“常规”选项卡中单击“添加计数器”按钮,在“性能对象”下拉框中选择“Paging File”,并在下面选择“% Usage Peak”计数器(见图3),右边的“从列表选择范例”中选择“_Total”,然后单击“添加”按钮,并单击“关闭”按钮返回。

windows 性能监视器_性能 windows_03

在“数据采样间隔”中设置时间间隔为“1分钟”,再单击“日志文件”选项卡(见图4),在“日志文件类型”下拉框中选择“文本文件(逗号分隔)”,同时记住下面的“D:\PerfLogs\页面文件_000001.csv”,这是日志文件的保存路径和文件名。

windows 性能监视器_性能 windows_04

单击“确定”按钮退出计数器设置,这时添加的计数器日志会自动运行。在电脑中像平时一样进行各种日常操作,并尽可能多地打开和关闭各种常用的应用程序和游戏,一般需要经过几个小时使用后,才能通过计数器日志得到比较全面的结果。
右击“页面文件”计数器选择“停止”,中止计数器日志的运行。然后用记事本打开“D:\PerfLogs\页面文件_000001.csv”文件,文件中每个时间段后面的数值表示当时页面文件的使用比率峰值,可以看出几乎所有的记录都显示页面文件使用率的峰值不超过50%(见图5),因此完全可以把页面文件的数值设置为当前值的50%,即256MB,这是一个比较合理的数值。而最大值则视情况而定,比如:你偶尔还会运行一些狂占内存的软件,那么可将最大值设置为1GB或更多(视剩余空间而定)。如果你平时的操作基本固定,那么可考虑把页面文件的“初始大小”和“最大值”设置为同样大小,这样会减少磁盘碎片的产生。

windows 性能监视器_性能 windows_05


这里介绍的方法适合硬盘空间相对紧张,并希望经常了解系统状况的用户。虚拟内存各部分的常规配置方法,请参看本刊2004年第5期《虚拟内存到底应该怎么设?》一文。

你知道吗?
用Excel分析报告内容
通过一段时间监测,你收集了日志文件,文件格式都是CSV,这种格式是专为电子表格设计的。我们可以利用Excel,把它做成饼图或是曲线图,直观地了解不同时间内的页面文件变化。同样方法,也可以监视内存等对象的变化趋势。使用方法是在Excel中直接打开CSV文件,然后使用“插入→图表→图表向导”的命令进一步进行设计。

实例2:DIY一个内存不足报警器
前面介绍了通过“Available MBytes”计数器可以观察系统可用内存不足的情况,当可用内存极低时,就会影响到系统性能。通过“警报”功能监视该计数器,当它的数值低于20MB时自动通过信使消息发出警报提示,做到“防患于未然”。
添加警报计数器。右击“警报”节点,选择“新建警报设置”,输入名称“内存不足”,在打开的对话框中单击“常规”选项卡,单击“添加”按钮,按前面介绍的方法添加“Memory”对象中的“Available MBytes”计数器。
设置警报条件。在“将触发警报,如果值是”后面的下拉框中选择“低于”,后面输入数值“20”,也就是当该计数器数值低于“20”时(即可用内存低于20MB)触发警报条件。然后在“数据采样间隔”中设置时间间隔为30秒(见图6)。

windows 性能监视器_性能 windows_06


单击“操作”选项卡(见图7),选中“发送网络信息到”选项,并在下面输入你的计算机名(在添加计数器时可以看到你的计算机名)。当然,使用这种警报方式需要系统中没有关闭信使服务。最后单击“确定”按钮保存设置,添加的“警报”将会自动启动运行。

windows 性能监视器_性能 windows_07


现在就可以关闭性能管理工具,正常使用电脑了。当系统可用内存低于20MB时,你将会收到一个信使消息提示,这时就需要退出部分程序,腾出内存或重启系统,提前避免程序失去响应的情况。
小提示
★在“操作”选项卡中还可以选择使用其他警报方式,例如写入日志、运行程序等。这里有一个很特别的功能,可以启动性能数据日志,这样可以实现与计数器日志的联动操作。
★系统性能监视器和警报在后台运行时,也会占用一定系统资源,我们可以使用一些技巧来尽量减少它的资源占用。例如设置较长的数据采样间隔、删除不需要监视的计数器,另外要注意日志文件不要保存到正在监视的磁盘中。

总的来说,系统性能管理工具非常强大,它常被系统维护专家用来发现和解决各种与系统相关的问题,特别是服务器方面,前面我们只是介绍了一些它的皮毛,如果你对它感兴趣,请参考相关专业图书。