存储专栏:使用Windows Perfmon看存储性能问题

介绍

Windows Perfmon的全称是Windows Performance Monitor(“Perfmon”),是一个Windows操作系统集成的性能监控工具,其中包含的条目CPU,内存,磁盘,应用程序等等。本文关注存储相关的Physical Disk中的性能条目,深入介绍每个条目的含义,以及和存储系统中IOPS、IO Size、Throughput(MB/s)、Disk Response Time对应关系,帮助用户更好的了解Windows平台的存储性能状况。

更多信息

使用Windows Perfmon:

打开Perfmon的方法很简单,在Windows桌面直接点击开始 – 运行 – 输入perfmon。打开工具以后,从右侧选择Performance Monitor。点击窗口上的绿色添加按钮,添加性能条目。选择Physical Disk然后展开,Instance of Selected Object选择所需要查看的磁盘,点击添加。(截图为Windows Server 2008版本的Perfmon)

选择需要的性能条目和监控的磁盘以后,点击确认,Perfmon开始对磁盘性能数据进行采样。用户可以选择三种数据的呈现方式:趋势图、柱状图和报表(下图为报表类型)。

Windows Perform “Physical Disk”中的性能条目:

Physical Disk之类中包含了很多性能条目:

% idle time

% disk time

% disk read time

% disk write time

Disk Bytes/sec

Disk Transfers/sec

Disk Reads/sec

Disk Writes/sec

Disk Read Bytes/sec

Disk Write Bytes/sec

Avg. disk sec/read

Avg. disk sec/write

Avg. disk sec/transfer

Avg. disk bytes/transfer

Avg. Disk Queue Length

Avg. disk read queue length

Avg. disk write queue length

Current Disk Queue Length

乍一看内容比较多,而且不是很容易理解。下面我们把这些性能条目按照存储系统中常用的性能指标IOPS、IO Size、Throughput(MB/s)、Disk Response Time进行分类,更加容易理解和区分。

关于磁盘响应时间(Disk Response Time)条目:

1.Avg. Disk sec/Transfer:显示了存储端处理的每个IO的平均时间。
2.Avg. Disk sec/Read:显示了存储端处理的每个读IO的平均时间。
3.Avg. Disk sec/Write:显示了存储端处理的每个写IO的平均时间。
上述条目显示的单位都是毫秒ms。这些条目是需要在性能分析中最先查看的内容,Disk Response Time直接决定了存储系统对应用的服务水平。通常用户感觉到性能问题,也是因为磁盘存储的Disk Response Time上升。下面以数据库应用为例,给出一些参考的Disk Response Time,如果磁盘响应在对应的范围内,则视为可以接受,否则需要进一步查看原因。当然根据生产环境的不同和应用的状况也需要区别对待。

数据文件:
•1-5ms,比较理想。
•6-20ms,可接受。
•大于20ms,会有性能问题,需要解决方案。

数据库事务日志:
•1-2ms,比较理想。
•2-6ms,可接受。
•6-15ms,需要优化。
•大于15ms,会有性能问题,需要解决方案。

数据仓库:

数据仓库由于应用的IO类型特点,通常单个IO都会比较大,从而使得IO的响应时间会增加,通常情况下对于数据仓库和报表系统,25-30ms会是比较健康的值。

关于IO大小(IO Size)的条目:

Avg. disk bytes/transfer直接显示了在采样期间,Windows服务器发送到存储的IO的平均大小。关于不同应用的参考IO大小的内容,可以参考文章:关于不同应用程序存储IO类型的描述

关于IOPS条目:

1.Disk Transfers/sec:显示了磁盘上的IOPS总数,直观的显示了说对应LUN上的每秒IO的吞吐量。
2.Disk Reads/sec:显示了磁盘每秒的读IO数量。
3.Disk Writes/sec:显示了磁盘每秒的写IO数量。

根据IOPS处理的参考值,虽然我们获取不同物理磁盘所对应的参考IOPS。不过实际生产环境中情况会更加复杂,由于存储阵列的缓存机制的存在,对于特定LUN的IOPS计算牵涉到缓存的命中,一个健康的存储环境,IOPS会远高于物理磁盘理论值之和。但也不是IOPS越高说明存储有性能问题,最先需要注意的还是在上面谈到的Disk Response Time。如果IOPS处于一个低点,并没有达到物理磁盘的理论值,但是Disk Response Time则很高,则说明存储端是存在问题的。

下面列出几种不同的物理磁盘类型的参考IOPS值:

•15000rpm 硬盘 120 – 180 IOPs
•10000rpm 硬盘100 – 150 IOPs
•7200rpm 硬盘 80 – 100 IOPs
•企业级SSD磁盘2000 – 5000 IOPs

关于Throughput(MB/s)条目:

1.Disk Bytes/sec:显示了磁盘上的总的数据传输量,单位为Byte。
2.Disk Read Bytes/sec:显示了磁盘上读数据的传输量。
3.Disk Write Bytes/sec:显示了磁盘上写数据的传输量。

这个值的显示换算成MB需要除以1024^2。这里要提到的一点是,IOPS和带宽显示并不是完全成正比的。通常情况下,对于小IO的情况,着重看的是IOPS,对于大IO的情况,则是Throughput(MBs)。

其他性能条目:

 % idle time 、%disk time、%disk read time、% disk write time这几个值显示磁盘处于做读写状态的百分比。理论上,disk time%这个值应该小于100%,否则则说明磁盘处于极度繁忙状态,或存在性能问题。

Avg. Disk Queue Length、Avg. disk read queue length、Avg. disk write queue length、Current Disk Queue Length这几个值显示了磁盘队列长度的相关信息。所谓Disk Queue也就是服务器端发出的存储操作正在等待被存储处理的请求数目。例如有一个应用发出一条读请求,但是目标磁盘当时正在处理其他任务。那么这个新的读请求就会被放在磁盘队列里。这时候磁盘队列的值就是1。理论上讲,Current Disk Queue Length的这个值不应该长时间地大于2。Avg. Disk Queue Length的值也是,如果看到采样期间,平均的Queue Length大于1,则说明在采样的某段时间存储无法完全响应应用端说发出的IO请求的。

本文作者为EMC中文技术社区(https://community.emc.com/go/chinese)技术版主。