磁盘性能指标
传输速率
内部传输速率
磁盘的内部传输速率指的是磁头读写磁盘时的最高速率。这个速率不包括寻道以及等待扇区旋转到磁头下所耗费时间的影响。它是一种理想情况,即假设磁头读写的时候不需要换道,也不专门读取某个扇区,而是只在一个磁道上连续地循环读写这个磁道的所有扇区,此时的速率就叫做硬盘的内部传输速率。
实际上,磁头必须不断地被“打断”去进行换道操作,整体传输速率就会大大降低。为了解决这个问题,引入RAID技术。如果有很多磁盘联合起来,同一时刻总有某块硬盘的磁头在读写状态而不是都在换道状态,这就相当于一个大虚拟磁盘的磁头总是处于读写状态,所以RAID可以显著提升传输速率。
外部传输速率
从磁盘外部接口传送给硬盘控制器时候的传输速率,就是硬盘的外部传输速率。因为磁头要被不断地打断,所以外部接口传输速率无须和磁头传输速率一样,只要满足最终的实际速率即可。外部接口的速率通常大于实际使用中磁头读写数据的速率(计算入换道的损失)。
IO延迟、Queue Depth、IOPS、传输带宽
IO延迟:
IO延迟是指控制器将IO指令发出之后,直到IO完成的过程中所耗费的时间。目前业界有不成文的规定,只要I0延迟在20ms以内,此时IO的性能对于应用程序来说都是可以接受的,但是如果大于20ms,应用程序的性能将会受到比较大的影响。
按这个标准计算,IOPS=1000ms/20ms=50,IOPS为50就能瞒住要求。但实际上现在存储系统已经做到了几十万IOPS,这就引入了Queue Depth
Queue Depth(队列深度):
控制器所发出的批量指令的最大条数,由控制器上的Queue Depth决定。如果连接外部独立磁盘阵列,则一般主机控制器端可以将其Queue Depth设置为64、128等值,视情况而定。
IOPS:
磁盘的10PS,也就是每秒能进行多少次10,每次10根据写入数据的大小,这个值也不是固定的。
三者关系
IOPS=(Queue Depth)×(IO Latency)
控制器向存储设备发起的指令,不是一条一条顺序发送的,而是一批一批的发送,存储目标设备批量执行IO,然后将数据和结果返回控制器,也就是说,只要存储设备肚量和消化能力足够,在IO比较少的时候,处理一条指令和同时处理多条指令将会耗费几乎相同的时间。
由于控制器是成批发送指令,因此Queue Depth越大,IO延迟越大(因为IO指令要等到Queue Depth满)
随着上层业务增大,IO数量激增,会逐渐逼近IOPS的极限。
相同IOPS情况下,IO延迟越低越好。
IOPS与IO SIZE关系
IOPS最低情况:写入大块数据 + 频繁环道
IOPS最高情况:写入小块数据(一个sector)+ 不换道
磁盘转述越高性能越好。15000转的磁盘性能高于10000转的磁盘。
传输带宽
传输带宽指的是硬盘或设备在传输数据的时候数据流的速度。如果写入10000个1KB的文件需要10s,那么此时的传输带宽只能达到每秒1MB,而写入一个10MB的文件用了0.1s,那么此时的传输带宽就是100MB/s。所以,即使同一块硬盘在写入不同大小的数据时,表现出来的带宽也是不同的。
具有高带宽规格的硬盘在传输大块连续数据时具有优势,而具有高IOPS的硬盘在传输小块不连续的数据时具有优势。
同样,对于一些磁盘阵列来说,也有这两个规格。一些高端产品同时具备较高的IOPS和带宽,这样就可以保证在任何应用下都能表现出高性能。