我一直在试图弄清楚我的数据库服务器arrays上的IOPS是什么,看看它是否太多了。 arrays是RAID 5中的四个72.6gb 15k rpm驱动器。要计算RAID 5的IOPS,使用以下公式:( (reads + (4 * Writes)) / Number of disks = total IOPS 。 该公式是从MSDN 。 我也想计算平均队列长度,但我不知道他们从哪里得到的公式,但我认为它读取作为avg que length/number of disks = actual queue 。
为了填充这个公式,我使用了perfmon来收集所需的信息。 我在正常生产负荷下提出了这个问题: (873.982 + (4 * 28.999)) / 4 = 247.495 。 另外,磁盘队列长度为14.454/4 = 3.614 。
所以对于这个问题,我错了,认为这个数组有一个非常高的磁盘IO?
编辑
我有机会今天上午在正常/高负荷下再次检查。 这次更大的数量和超过600的IOPS大约5分钟,然后再次停止。 但是我也看了Avg sec/Transfer , %Disk Time和%Idle Time 。 这些数字是在每秒的读写次数分别仅为332.997 / 17.999时所采取的。
%磁盘时间:219.436
%空闲时间:0.300
平均磁盘队列长度:2.194
平均磁盘秒/转移:0.006
Pages / sec:2927.802
处理器时间百分比:21.877
编辑(再次)
看起来我已经解决了这个问题。 谢谢您的帮助。 另外对于一个漂亮的华丽parsing器,我发现这个: http : //pal.codeplex.com/它把数据分解成可用的东西非常好。
我自己最近在这方面做了一些研究。 这里有一个伟大的计算器,在这个网站上的人指出了我。 以97:3的读写比率抛出一些基本的数字,而不考虑caching命中,看起来你的arrays应该能够在4k机械地提供约675 IOPS。 你正在做每秒902次传输,因为每个磁盘的队列长度也是这样。
您也可以测量sec / Transfer和%Disk时间。 我发现%磁盘时间对于RAIDarrays来说相当奇怪,我发现测量空闲时间百分比更准确,然后使用公式100 – 空闲百分比来计算繁忙时间。 我打赌你会发现你的磁盘非常繁忙,你会看到很多20ms +的传输时间。 国际海事组织这些数字更清楚,如果你想得出结论,你有一个磁盘问题。
这是一个很好的文章 ,被引用了很多。 这是过时的,但相关的,是特别有用的解释为什么%磁盘时间和平均。 队列长度可能难以解释。