现在的磁盘都是由多个磁片组成,读取时间主要由3个部分组成
1、Rotation lantency
2、Track seeking
3. Data transfer time
1.Rotation lantency
指磁头等磁盘转到指定sector的时间,比如1万转的磁盘(10k rpm),那么一秒转167转,所以转1圈是6ms.
max lantency:6ms,average latency:3ms
2.Track seeking
指寻找磁道的时间,这个full seek:10ms,average seek:5ms
还有一个track to track的时间,这个指挪到相邻磁道所用的时间,这个时间很短,只要0.3ms
3.传输时间
除非有问题了,否则忽略不计
所以一次随机io需要的时间平均为3ms+5ms=8ms
我还查了下sun 1000rpm 146G磁盘的参数,和上边说的基本吻合
Attribute Value
Capacity, formatted 146,810,936 bytes minimum
(512 bytes per sector)
Seek times (read/write)
Single track seek 0.3 msec / 0.5 msec
Average seek 4.7 msec / 5.2 msec
Maximum seek 9.2 msec / 9.7 msec
Average Rotational latency 2.99 msec
HDA data transfer rate
Disk to read buffer 56 Mbytes per sec (minimum)
Interface data rate 5 to 320 Mbytes per sec
Maximum instantaneous 320 Mbytes per sec (Ultra320 Mode)
磁盘性能
对于顺序读取来说,一次io的时间是3+0.3=3.3ms,1s可以做303次io,对于scis320来说带宽是320m/s,250io/s - 这个是怎么来的,假设1.xM的数据per IO?75%以上的io读取会发生queuing,所以磁盘性能是225io/s
对于随机读取来说,一次io的时间是3+5=8ms,1s可以做125次io,取75%是94io/s
要解决磁盘性能局限
1。分离顺序io,比如日志文件是顺序io,所以要把ldf文件单独放到一个磁盘上
2。striple