Windows的性能监控,目前主要有两种方式。一种是wmi协议:即通过Windows管理接口,获取性能计数器的值进行监控,比如使用libpcap开源库;另一种则是命令行工具typeperf,下面我们将详细介绍此种方式。
一、typeperf 命令用法
typeperf 命令将性能数据写入命令窗口或日志文件。 若要停止 typeperf,请按 CTRL+C。
语法
typeperf <counter [counter ...]> [options]
typeperf -cf <filename> [options]
typeperf -q [object] [options]
typeperf -qx [object] [options]
参数
参数 |
说明 |
<counter [counter […]]> |
指定要监视的性能计数器。 参数 <counter> 是 \Computer\Object (Instance) \Counter 格式(如 )的性能计数器的全名 \\Server1\Processor(0)\% User Time。 |
选项
选项 |
说明 |
-f <CSV | TSV | BIN | SQL> |
指定输出文件格式。 默认值为 CSV。 |
-cf <filename> |
指定包含要监视的性能计数器列表的文件,每行一个计数器。 |
-si <[[hh:]mm:]ss> |
指定采样间隔。 默认值为一秒。 |
-o <filename> |
指定输出文件或数据库SQL路径。 默认值为 STDOUT (写入命令窗口) 。 |
-q [object] |
显示已安装计数器的列表, (实例) 。 若要列出一个对象的计数器,请包括对象名称。 例子 |
-qx [object] |
显示具有 实例的已安装计数器的列表。 若要列出一个对象的计数器,请包括对象名称。 |
-sc <samples> |
指定要收集的样本数。 默认设置是收集数据,直到按 CTRL+C。 |
-config <filename> |
指定包含命令选项的设置文件。 |
-s <computer_name> |
指定在计数器路径中未指定计算机时要监视的远程计算机。 |
-y |
在 无提示 的情况下回答所有问题的"是"。 |
/? |
在命令提示符下显示帮助。 |
示例
若要将本地计算机 \Processor(_Total)\% Processor Time 的性能计数器的值写入命令窗口(默认采样间隔为 1 秒,直到按 CTRL+C),请键入:
typeperf \Processor(_Total)\% Processor Time
若要以 5 秒的采样间隔将文件 counters.txt 中的计数器列表的值写入制表符分隔的文件 domain2.tsv ,直到收集 50 个样本,请键入:
typeperf -cf counters.txt -si 5 -sc 50 -f TSV -o domain2.tsv
若要使用计数器对象 PhysicalDisk 的实例查询已安装的计数器,将生成的列表写入 counters.txt,请 键入:
typeperf -qx PhysicalDisk -o counters.txt
二、CPU使用率统计
cpu使用率命令:typeperf "\Processor(_Total)\% Processor Time”
要收集用户态和系统态CPU使用时间,能够指定性能计数器User Time和Privileged Time。在命令提示符窗口或者cmd文件中,命令看起来是这样的:typeperf "\Processor(_Total)\% Privileged Time"
typeperf "\Processor(_Total)\% User Time"队列
三、内存使用率统计
在windows Performance Monitor中监控每秒内存页面调度(\Memory\Pages/second)、可用内存字节数(\Memory\Available MBytes),能够判断系统是否正在进行页面交换。
命令行:typeperf "\Memory\Available MBytes" "\Memory\Pages/sec"
四、网络IO使用率统计
网络接口每秒传递的字节数能够经过性能计数器\Network Interface(*)\Bytes Total/sec得到。通配符“*”表示报告的是系统全部网络接口的总字节数。
命令行:typeperf "\Network Interface(某网卡)\Bytes Total/sec"
获取网络接口的接收字节数,通过"\Network Interface(某网卡)\Bytes Received/sec"命令获取。
获取网络接口的发送字节数,通过"\Network Interface(某网卡)\Bytes Sent/sec"命令获取。
网络接口的带宽能够经过性能计数器\Network Interface(*)\Current Bandwidth得到,其中“*”应该用被监控的网络接口替换。
命令行:typeperf "\Network Interface(某网卡)\Current Bandwidth"
性能计数器Current Bandwidth的带宽单位是bits/s,相比而言,Bytes Total/sec是bytes/s。因此网络使用率的计算公式须要考虑适当的单位,bits/s或bytes/s。下面是两个网络使用率的公式:第一个是Current Bandwidth除以8变成字节,第二个是Bytes Total/sec乘以8变成比特位。
Network utilization % = (Bytes Total/sec) / (Current Bandwidth / 8) * 100
或者
Network utilization % = (Bytes Total/sec * 8) / (Current Bandwidth) * 100
五、磁盘性能统计
获取物理磁盘相关性能计数器:typeperf -qx PhysicalDisk
查询所有磁盘使用率:
typeperf "\PhysicalDisk(*)\% Idle Time" -si 5 -sc 2
查询某个盘符对应磁盘使用率:
typeperf "\PhysicalDisk(* D:)\% Idle Time" -si 5 -sc 2
查询平均磁盘读队列长度
typeperf "\PhysicalDisk(_Total)\Avg. Disk Read Queue Length" -si 5 -sc 2
磁盘常见监控项:
\PhysicalDisk(_Total)\Avg. Disk Queue Length 平均磁盘队列长度( Avg. Disk Queue Length) 在采样的时间间隔中,选中的物理磁盘读请求和写请求排队的平均数量。
\PhysicalDisk(_Total)\Avg. Disk Read Queue Length 平均磁盘读队列长度( Avg. Disk Read Queue Length) 在采样的时间间隔中,选中的物理磁盘读请求排队的平均数量。
\PhysicalDisk(_Total)\Avg. Disk Write Queue Length 平均磁盘写队列长度( Avg. Disk Write Queue Length) 在采样的时间间隔中,选中的物理磁盘写请求排队的平均数量。
\PhysicalDisk(_Total)\% Disk Time 磁盘时间百分比(%Disk Time) 选中的物理磁盘忙于服务读请求或写请求总共用的时间的百分比,是磁盘写时间百分比与磁盘读时间百分比的和。
\PhysicalDisk(_Total)\% Disk Read Time 磁盘读时间百分比(%Disk Read Time) 选中的物理磁盘忙于服务读请求总共用的时间的百分比
\PhysicalDisk(_Total)\% Disk Write Time 磁盘写时间百分比(%Disk Write Time) 选中的物理磁盘忙于服务写请求总共用的时间的百分比
\PhysicalDisk(_Total)\Avg. Disk sec/Transfer 平均磁盘秒数/传输( Avg. Disk sec/Transfer) 从物理磁盘进行传输的平均时间,以秒为单位
\PhysicalDisk(_Total)\Avg. Disk sec/Read IO响应时间 读 平均磁盘秒数/读( Avg. Disk sec/Read) 从物理磁盘读数据的平均时间,以秒为单位。
\PhysicalDisk(_Total)\Avg. Disk sec/Write IO响应时间 写 平均磁盘秒数/写( Avg. Disk sec/Write) 向物理磁盘写数据的平均时间,以秒为单位。
\PhysicalDisk(_Total)\Disk Transfers/sec IOPS 磁盘传输/秒(Disk Transfers/sec) 物理磁盘上的读和写操作的比率。
\PhysicalDisk(_Total)\Disk Reads/sec IOPS 读 磁盘读/秒(Disk Reads/sec) 物理磁盘上的读操作比率。
\PhysicalDisk(_Total)\Disk Writes/sec IOPS 写 磁盘写/秒(Disk Writes/sec) 物理磁盘上的写操作比率。
\PhysicalDisk(_Total)\Disk Read Bytes/sec IO吞吐量 磁盘读/秒(Disk Reads Bytes/sec) 物理磁盘上每秒读字节。
\PhysicalDisk(_Total)\Disk Write Bytes/sec IO吞吐量 磁盘写/秒(Disk Writes Bytes/sec) 物理磁盘上每秒写字节。
\PhysicalDisk(_Total)\% Idle Time 空闲时间百分比(%Idle Time) 物理磁盘在采样时间间隔中处于空闲状态的时间百分比。
六、收集数据库服务器性能统计
1、查找和数据库JinRiDomesticOrder相关的性能参数
TYPEPERF -qx "SQLServer:Databases" | FIND "JinRiDomesticOrder"
2、查找和数据库JinRiDomesticOrder相关的性能参数并导出
TYPEPERF -qx "SQLServer:Databases" | FIND "JinRi" >>s:\perf.txt
3、perf.txt这个文本文件中读取计数器信息,将技术器数值写入到perf.csv文件中,每隔10秒钟执行一次,共执行600次
TYPEPERF -f CSV -o s:\perf.csv -si 10 -cf s:\perf.txt -sc 600