1 Perfmon简介

Perfmon(Performance Monitor)是一款Windows自带的性能监控工具,提供了图表化的系统性能实时监视器、性能日志和警报管理。通过添加性能计数器(Performance Counter)可以实现对CPU、内存、网络、磁盘、进程等多类对象的上百个指标的监控。其中,性能日志可定义输出格式为二进制文件、文本文件、SQLSERVER记录等,以方便后续使用第三方工具进行分析。

2 Perfmon使用

Perfmon支持选择性的监控感兴趣的性能计数器,指标范围广、粒度细,而且支持将监控数据持久化。当然,如果只是关注性能主要指标(cpu、mem、io、net),也可以直接查看资源管理器(Resmon.exe)。本文主要介绍使用Perfmon进行性能监控的通用方法,更细节的内容请参考其他文档,如,微软官方文档或Perfmon帮助文档:

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc749249(v=ws.11)

2.1 Perfmon使用方法

Perfmon是windows自带工具,无需安装,键入命令即可打开工具,具体步骤如下:

1、开始-->搜索程序和文件,输入perfmon,回车后即可打开工具;

2、双击左侧导航栏的【性能监视器】,然后在右窗格中单击鼠标右键或”+”,选择“添加计数器”,如图:

 

.net 性能监控工具 windows性能监控工具_.net 性能监控工具

3、在”性能对象”列表,选择需要监控的计数器,添加后即可进行实时监控,如图所示是选择监控cpu的计数器:

 

.net 性能监控工具 windows性能监控工具_.net 性能监控工具_02

监控计数器添加完成后,可以查看到图形实时变化,如上图,计数器%Processor Time表示cpu的利用率,从图中可以看到最新值、平均值、最小和最大值,以及监控持续时间,其中,这里的持续时间是指当前配置显示在图表中的时间跨度,并不是已经监控的时间,该配置可以右键点击图标->属性->常规->持续时间中配置。另外,监控图上右键点击,可以对计算器进行操作,如添加、删除、隐藏、保存、更改属性等操作。

2.2 Perfmon监控对象和指标

通过上节描述,已经可以使用Perfmon进行实时监控了,可能仍然会对描述中的性能对象性能计数器感到疑惑。通俗的讲,性能对象就是你要直接监控的资源对象,如cpu,mem等,而衡量这些对象的性能需要一些指标,就是性能计数器。Perfmon支持监控多种性能对象,每个对象又提供了比较全面的性能计数器。性能对象、常用性能对象及计数器,如下表所示:

表1 性能对象描述

上表中的性能对象有多达数百个性能指标,如果安装有.NET框架,还会看到更多的.NET开头的对象。我们关注系统或应用的性能时,不可能、也不必要关注这么多指标,只需根据实际情况选取必要指标即可。一般而言,对于Windows系统或运行其上的应用来说,CPU、 Memory、Disk、Network等关键对象是必不可少的。

表2 常用性能对象和计数器

2.3 使用计数器日志

在2.1节中介绍了Perfmon性能监视器的使用方法,该功能主要用于对指定的性能指标进行实时监控(类似nmon的交互模式),但它不能把监控的数据保存下来。如果需要持续对系统的指定性能指标进行监控,就需要使用Perfmon的计数器日志功能(类比nmon的后台监控模式),计数器日志可以把监控数据以指定的方式进行保存,同时也方便后续用第三方工具进行分析。

接下来,以监控CPU\MEM为例介绍Perfmon计数器日志的使用方法。

1、在Perfmon右侧导航窗格中,展开“数据收集器集”,右键单击“用户定义”,指向“新建”,然后单击“数据收集器集”,将启动“创建新数据收集器集”向导;

 

.net 性能监控工具 windows性能监控工具_右键_03

2、填入收集器名称,选择”手动创建(高级)”,点击下一步进入选择数据类型向导,如图:

 

.net 性能监控工具 windows性能监控工具_Time_04

3、选择“性能计数器”,点击下一步,进入性能计数器选择界面,通过点击”添加”按钮添加CPU\MEM的性能计数器,同时,可以根据采集时长自定义采样间隔,默认是15s,如图:

 

.net 性能监控工具 windows性能监控工具_右键_05

4、如果需要自定义日志的保存位置,可以点击”下一步”,否则可以直接点击“完成”,结束配置。

5、另外,可以右键单击采集器集名称,选择属性,配置监控任务的启停条件,如,配置定时任务或退出条件等,如图为配置采集30s后停止:

 

.net 性能监控工具 windows性能监控工具_.net 性能监控工具_06

6、如需对监控的性能指标、日志格式、采样时间等进行调整,可以右键单击数据收集任务,选择属性,编辑即可,可以增删计数器、修改日志格式(默认二进制的.blg)、修改采样间隔等,如图:

 

.net 性能监控工具 windows性能监控工具_Time_07

7、最后,点击工具栏

启动数据收集器即可;

8、结果收集完成后,可以在右侧导航栏选择”报告”,展开“用户自定义”,查看报告;也可以通过“性能监视器”“查看日志数据”选择要加载显示的日志文件。

3 Perfmon性能分析方法

本节主要介绍使用Perfmon对CPU、MEM、磁盘I\O、NET进行监控和性能分析的通用思路和方法。

1、CPU分析方法

根据2.2节的介绍,CPU监控涉及的主要性能计数器是% Processor Time、% User Time、System:Processor Queue Length。其中,% Processor Time性能计数器的数值展示了服务器CPU的使用情况,如果该值持续超过90%,则说明整个系统面临着CPU瓶颈,需要通过增加CPU来提高性能;%User Time性能计数器的数值展示了用户空间进程的CPU利用率,如果该值较大,需要分析是哪个用户进程、执行的何种操作引起了CPU升高; System:Processor Queue Length计数器的数值展示了CPU等待处理的队列长度,当该计数器的值 > (CPU数量的总数+1)时,说明出现处理器阻塞。一般情况下,Processor:%Process Time很高时,都会伴随着处理器阻塞,但产生处理器阻塞时,Processor:%Process Time 计数器的值并不一定很高,此时就需要分析产生处理器阻塞的原因。

2、MEM分析方法

MEM监控涉及的性能计数器主要是% Commitued Bytes in Use、Available Bytes,如果% Commitued Bytes in Use计数器显示的数值比较大,则系统可能存在内存瓶颈,可以根据Available Bytes计数器的数值进一步判断,如果该值小,说明可用内存不足,存在性能瓶颈;另外,需要注意Pages/sec、Pages Read/sec和Page Faults/sec的数值,这些指标反映了操作系统进行磁盘交换的频率。如果Pages/sec的数值持续较高(如几百的数值),可能存在内存瓶颈,但不排除可能是程序使用内存映射文件所致;如果Page Faults/sec的数值较高,说明页面失效频率较高,操作系统向内存读取的次数较多;通常,Pages Read/sec计数器的数值,一般不要超过5,否则很可能存在内存瓶颈。

3、磁盘IO分析方法

磁盘I/O监控涉及的性能计数器主要是 % Busy Time、Avg. Disk Queue Length、Current Disk Queue Length,若% Busy Time性能计数器的数值比较大,则硬盘可能存在瓶颈。另外,对于顺序读写的应用,需要计算IOPS,如果实际得到的IOPS等于或超过了磁盘标称的IO能力,则该磁盘存在性能瓶颈。

4、NET分析方法

NET监控涉及的性能计数器主要是Bytes Total/sec,通过该计数器值与网络带宽数值进行比较,可以判断网络链接速度是否存在瓶颈。