硬盘性能参数与高效IO(参见:硬盘驱动器- 维基百科):
  • 转速:当前的服务器硬盘一般都是15000转/分钟
  • 平均延时:平均延时就是磁道上的那段数据转到磁头下面需要的时间,这直接由转速决定。比如15000转/分钟的硬盘,也就是每秒250转,每转一圈需要4毫秒,因此平均延时就是转半圈的时间,等于2毫秒。
  • 平均寻道时间:服务器硬盘一般平均寻道时间是4毫秒。
  • 持续传输速率:服务器硬盘一般在80M每秒,也就是80K每毫秒(为了方便计算,单位都用毫秒)。

因此读取一次数据需要的时间等于:定位时间(平均延时2ms+寻道4ms)+数据传送时间(要读的数据/80k*ms)
IO大小
定位时间(毫秒)
传送时间(毫秒)
数据传输效率
(传送时间/总时间)
8K
6
0.1
1.6%
128K
6
1.6
21%
512K
6
6.4
52%
1M
6
12.8
68%
2M
6
25.6
81%
准则:数据传送时间 > 5*定位时间;换句话说就是:数据传输效率大于80%,否则大部分时间都用在“寻道定位”上显然是不合算的。
(我们回想一下十年前的硬盘技术:容量大约是1.2GB;转速大约在5400转/分钟;持续传输速率大约在10M每秒;平均寻道时间大约在15毫秒。)
    硬盘的技术进步带给持续传输速率好处要远大于平均寻道时间的好处,因此差不多越高级的硬盘“IO大小”要设定的越大才好。


RAID 0,或者RAID 10的stripe size计算公式:

RAID的技术介绍:
  • stripe width(条带宽度):RAID中的磁盘数,就是组成这个stripe的磁盘数。如,4个磁盘组成的RAID 0,条带宽度就是4。
  • stripe depth(条带深度):单块磁盘上条带的大小,有时也称为stripe unit。
  • stripe size(条带大小):stripe depth*stripe width。
  • 还有一种说法:有时也称为block size块大小, chunk size簇大小, stripe length条带长度,granularity粒度,单块磁盘上的每次IO的最小单位。

RAID条带大小的另一个计算公式为:(参见:Oracle and RAID Usage
条带大小 = (0.25*平均定位时间*数据传输速率*(并发用户数-1)*1.024)+0.5K
平均定位时间=(平均延时+平均寻道时间)  (milliseconds);数据传输速率单位为:Megabyte/sec;1.024 = 1s/1000ms*1024K/1M (单位转换因子)
举例来说,磁盘寻道时间是6ms,传输速率80MB,且有20个并发用户的条带大小应该为:
(0.25*6*80*19*1.024)+0.5=2335.22K(差不多2M)