硬盘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
/
R
P
M
/
2
旋转延时=60*1000/RPM/2
旋转延时=60∗1000/RPM/2
传输时间
平均数据大小除以接口传输率,耗时很小粗略计算可以忽略。 SATA,300~600MB/s。 SAS,3Gbit/s。 FC,2~4Gbit/s。 NVME,32Gbit/s。
吞吐量估算
I
/
O
吞
吐
量
(
一
秒
内
)
=
I
O
P
S
∗
平
均
I
/
O
S
I
Z
E
I/O 吞吐量(一秒内)= IOPS* 平均 I/O SIZE
I/O吞吐量(一秒内)=IOPS∗平均I/OSIZE
IOPS估算
I
O
P
S
=
1000
m
s
/
(
寻
道
时
间
+
旋
转
延
迟
)
物
理
磁
盘
总
的
I
O
P
S
=
物
理
磁
盘
的
I
O
P
S
×
磁
盘
数
目
可
用
的
I
O
P
S
=
(
物
理
磁
盘
总
的
I
O
P
S
×
写
百
分
比
÷
R
A
I
D
写
惩
罚
)
+
(
物
理
磁
盘
总
的
I
O
P
S
×
读
百
分
比
)
IOPS = 1000 ms/ (寻道时间 + 旋转延迟)\\ 物理磁盘总的IOPS = 物理磁盘的IOPS × 磁盘数目\\ 可用的IOPS = (物理磁盘总的IOPS × 写百分比 ÷ RAID写惩罚) + (物理磁盘总的IOPS × 读百分比)
IOPS=1000ms/(寻道时间+旋转延迟)物理磁盘总的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盘数
-
如果单盘不能满足性能需求,需要通过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;
-
设需要IOPS 5000,读写比例2:1,则RAID10后IOPS需求为。 RAID10,(2/3) * 5000 + 2 * (1/3) * 5000 = 6666 IOPS;
-
已知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 性能问题:
-
平均读时间大于 15ms
-
在具有写 cache 的条件下,平均写时间大于 2.5ms
对于顺序负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题:
-
在一个磁盘上有两个连续的 I/O 流
-
吞吐量不足(即远远小于磁盘 I/O 带宽)
对于一块磁盘来讲,随着 IOPS 数量的增加,I/O service 也会增加,并且会有一个饱和点,即 IOPS 达到某个点以后,IOPS 再增加将会引起 I/O service time 的显著增加。
命令
判断是ssd还是hdd
-
cat /sys/block/*/queue/rotational
-
lsblk -d -o name,rota
0为ssd,1为hdd
查看磁盘转速
-
sginfo -g /dev/*