硬盘IO性能估算(IOPS,吞吐量,延时)

说明

磁盘种类

硬盘有固态硬盘(SSD 盘,新式硬盘)、机械硬盘(HDD 传统硬盘)、混合硬盘(HHD 一块基于传统机械硬盘诞生出来的新硬盘)。SSD采用闪存颗粒来储存,HDD采用磁性碟片来储存,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘。

容量

硬盘的容量以兆字节(MB/MiB)、千兆字节(GB/GiB)或百万兆字节(TB/TiB)为单位,而常见的换算式为:1TB=1024GB,1GB=1024MB而1MB=1024KB。但硬盘厂商通常运用的是GB,也就是1G=1000MB,而Win系统,就依旧以“GB”字样来表示“GiB”单位(1024换算的),因此我们在BIOS中或在格式化硬盘时看到的容量会比厂家的标称值要小。

转速(Rotational Speed 或Spindle speed)

RPM是Revolutions Per minute的缩写,是转/每分钟。RPM值越大,内部传输率就越快,访问时间就越短,硬盘的整体性能也就越好。

寻道时间 Tseek是指将读写磁头移动至正确的磁道上所需要的时间。寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms。

旋转延迟 Trotation是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的1/2表示。

数据传输时间 Ttransfer是指完成传输所请求的数据所需要的时间,它取决于数据传输率,其值等于数据大小除以数据传输率。目前IDE/ATA能达到133MB/s,SATA II可达到300MB/s的接口数据传输率,数据传输时间通常远小于前两部分消耗时间。简单计算时可忽略。

IOPS

每秒处理的IO次数

RPM

转速

性能估算

寻道时间估算

磁头移动到对应磁道上的耗时。

SATA 7200RPM,平均寻道时间是9ms。

SAS 10000RPM,平均寻道时间是6ms。

SAS 15000RPM,平均寻道时间是4ms。

具体查看磁盘供应商提供数据。

旋转延时估算

平均为磁盘旋转一周所需时间的一半
$$
旋转延时=60*1000/RPM/2
$$
传输时间

平均数据大小除以接口传输率,耗时很小粗略计算可以忽略。 SATA,300600MB/s。 SAS,3Gbit/s。 FC,24Gbit/s。 NVME,32Gbit/s。

吞吐量估算
$$
I/O 吞吐量(一秒内)= IOPS* 平均 I/O SIZE
$$
IOPS估算
$$
IOPS = 1000 ms/ (寻道时间 + 旋转延迟)\
物理磁盘总的IOPS = 物理磁盘的IOPS × 磁盘数目\
可用的IOPS = (物理磁盘总的IOPS × 写百分比 ÷ RAID写惩罚) + (物理磁盘总的IOPS × 读百分比)
$$
其中

RAID-0:直接的条带,数据每次写入对应物理磁盘上的一次写入,写惩罚值是1。

RAID-1和10:RAID-1 和RAID-10的写惩罚很简单理解,因为数据的镜像存在的,所以一次写入会有两次,写惩罚值是2。

RAID-5:RAID-5由于要计算校验位的机制存在,需要读数据、读校验位、写数据、写校验位四个步骤,所以RAID-5的写惩罚值是4。

RAID-6:RAID-6由于有两个校验位的存在,与RAID-5相比,需要读取两次校验位和写入两次校验位,所以RAID-6的写惩罚值是6。

iops估算raid盘数

  1. 如果单盘不能满足性能需求,需要通过Raid实现,计算所需硬盘数公式如下。 Raid1、10,Drive IOPS = Read IOPS + 2Write IOPS Raid3、5,Drive IOPS = Read IOPS + 4Write IOPS Raid6,Drive IOPS = Read IOPS + 6*Write IOPS;

  2. 设需要IOPS 5000,读写比例2:1,则RAID10后IOPS需求为。 RAID10,(2/3) * 5000 + 2 * (1/3) * 5000 = 6666 IOPS;

  3. 已知SAS 15000RPM机械硬盘IOPS165。 5000IOPS所需硬盘个数, 6666 / 165 = 40。

SSD硬盘IO估算

固态硬盘没有寻道时间和旋转时间。IO耗时是通过地址查找数据耗时,根据芯片颗粒SLC、MLC,中控芯片、队列深度32~64、接口SATA、PCIE的不同,一般负载非太高时是相对固定值(控制在60%利用率)。 IOPS = 1000 / IO耗时。因为SSD比较固定,比如Intel 320 SSD对8K avgrq-sz耗时0.1ms,1000/0.1ms=10000 IOPS。具体参考后续文章。

常见存储设备参考性能

5400 RPM SATA,60 IOPS

7200 RPM SATA,70 IOPS

10000 RPM SAS,110 IOPS

15000 RPM SAS,150 IOPS,Sequential RW 180MB/s、Radom RW 15MB/s。

10000 RPM FC,125 IOPS

15000 RPM FC,150 IOPS

SSD SATA,3000~40000 IOPS,R 400MB/s、W 250MB/s。

SSD PCIE,20000~40000 IOPS,R 500MB/s、W 300MB/s。

内存,1000000+ IOPS,30~60 GB/s。

性能调优

对于随机负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题:

  1. 平均读时间大于 15ms

  2. 在具有写 cache 的条件下,平均写时间大于 2.5ms

对于顺序负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题:

  1. 在一个磁盘上有两个连续的 I/O 流

  2. 吞吐量不足(即远远小于磁盘 I/O 带宽)

对于一块磁盘来讲,随着 IOPS 数量的增加,I/O service 也会增加,并且会有一个饱和点,即 IOPS 达到某个点以后,IOPS 再增加将会引起 I/O service time 的显著增加。

命令

判断是ssd还是hdd

  1. ```shell
    cat /sys/block/*/queue/rotational
    1
    2
    3

    2. ```shell
    lsblk -d -o name,rota

0为ssd,1为hdd

查看磁盘转速

  1. sginfo -g /dev/*