概述
本文介绍硬盘性能评估,并做了一些实测。
概念介绍
寻道时间Tseek是指将读写磁头移动至正确的磁道上所需要的时间。寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms。
旋转延迟Trotation是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的1/2表示。比如,7200 rpm的磁盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms,而转速为15000 rpm的磁盘其平均旋转延迟约为2ms。
数据传输时间Ttransfer是指完成传输所请求的数据所需要的时间,它取决于数据传输率,其值等于数据大小除以数据传输率。目前IDE/ATA能达到133MB/s,SATA II可达到300MB/s的接口数据传输率,数据传输时间通常远小于前两部分时间。
因此,理论上可以计算出磁盘的最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略数据传输时间。假设磁盘平均物理寻道时间为3ms, 磁盘转速为7200,10K,15K rpm,则磁盘IOPS理论最大值分别为,
IOPS = 1000 / (3 + 60000/7200/2) = 140
IOPS = 1000 / (3 + 60000/10000/2) = 167
IOPS = 1000 / (3 + 60000/15000/2) = 200
磁盘性能评估实测
此测试是对裸盘使用fio进行读写测试,分别是1M顺序读写和4K随机读写,并采用同等测试方法对基于不同raid创建的OSD进行读写测试,详细测试数据下表:
结论:
-
Raid0:条带大小对读写性能影响不大;
-
Raid0、Raid1 类型的阵列,增加 N 块盘,磁盘阵列读、写都有提升,效果相当于多了N块盘的性能;
-
Raid5、Raid6 类型的阵列,增加磁盘,对 4K 随机写性能影响不大,对4K 随机读有略微提升
BBU和缓存策略对磁盘性能的影响:
-
对randwrite影响最大,启用BBU的randwrite约为未启用的8倍左右
-
未启用BBU的场景randread反而略有提升
-
对1M顺序读写没有太大影响
创建了OSD的磁盘读写性能略微有些下降,但是可以忽略不计。
说明:
-
测试为先在路径/data/osd.x/下先写一个200G大小的文件,对该文件进行读写测试,文件大小对顺序读写无影响,对随机读写有影响,小文件随机读写性能随文件size增大而减小
-
OSD创建完成后会在后台进行ext4lazyinit,此进程会影响OSD的读写性能,大小越大43.661 TiB大小的OSD的ext4lazyinit会持续约一个小时10分钟左右