阿里云的售后技术支持团队分享:如何衡量Windows实例的磁盘性能

日期:2019年06月12日

我们大家都知道,在这个windows系统内部的,内置的一个非常强大的工具。我们英文叫Performance Monitor,中文叫性能监视器,这个功能本身集成了很多系统性能方面的一些指标,也包括了这个磁盘部分。

那么在这些众多的代表磁盘性能的指标里面的,我们怎么样去衡量磁盘的性能有没有问题?或者说我们在怀疑磁盘性能有问题的情况下呢?我们应该挑选哪些重点的指标来关注?

磁盘性能指标的数据来源及计算方法原理

我们首先来关注一下这些指标的数据来源是什么以及他一个计算方法原理,如下图。

这张图是代表了这个Windows内核存储方面的一个架构。每一个IO从应用层面下发,然后或者从这个系统下发,都会经过所有这张图里的模块,而且是自上而下。其中一个模块叫做Partition Manager,它就是这个所有磁盘性能数据的来源。

这个模块处于一个中间位,处于这个文件系统这个模块以下及这个存储硬件这个控制卡驱动之上。那么,为什么要把这个模块放到这个位置? 每一个IO从应用层面下发以后都会经过这个模块,经过这个模块的时候,内核的模块就会有机会去记录一些关于这个IO的一些统计信息。所有磁盘性能数据都是从这些统计信息里面换算而来。

举一个例子,一个IO从这个应用层的下发经过了这个文件系统,然后到达了这个Partition Manager模块,那么这个模块就有机会去记录这个IO开始的时间,当它下发给这个存储卡的驱动,最后发到这个存储上的时候,即IO完成的时候,Windows系统的Partition Manager就会再度调用Partition Manager的Completion Routine,记录这个IO完成的时间。这两者相减,就是单个IO完成的时间。那么我们有大量收集这种信息,那就会得到一个统计意义上的平均值。于是我们就得到了性能监视器里面一个磁盘方面的一个重要的指标——Disk sec/Transfer。

大家可以在这个windows的开始菜单里面这个点击运行,然后输入perfmon,然后回车就可以打开这个性能监视器。

重点指标

接下来我们就来逐一的过一下在这个性能监视器里面关于磁盘方面的一些指标。

Disk Bytes/sec

第一个我们就来看一下这个Disk Bytes/sec,这个指标代表每秒钟流向这个磁盘的这个字节数,这个指标也就代表了这个磁盘当前的一个流量。如果这个值特别高,是不是说明这个磁盘性能有问题。其实答案是否定的。

% Idle Time及Avg Disk Quene Length

另外两个指标——% Idle Time磁盘的空闲时间和Avg Disk Quene Length磁盘队列的长度。这个和刚才那个Disk Bytes/sec衡量意义上的一个原理是一样的。

如果这两个指标本身是特别高或特别低,不能说明磁盘性能有问题。

Avg. Disk sec/Transfer

我们刚才提出的一个重点指标Avg. Disk sec/Transfer,这个指标代表了单个IO完成的时间,性能监视器会做一个这个统计上的一个平均。那么如果这个指标特别高,就说明了这个系统在完成单个IO所花的时间非常长的,如果这个指标特别高的代表这个磁盘性能都有问题。这是因为当应用下发IO以后,如果这个磁盘用了很长的时间才完成单个IO,应用一定会感知到这样的问题。

那么,当发生这样的情况下,一定是对这个应用是一种不可忍受的一个状态,同时来讲的就是不管我流向这个磁盘的流量有多高或者多低我完成单个IO的这个时间应该是保证保证在一个可接受的一个范围之内。那么如果他特别高,那么也就是说磁盘性能本身是有一定的问题的。


推荐文章