信心源于数据~使用FIO压测华为云“云硬盘”性能指标
经常会遇到客户反馈说数据库跑在ECS上性能不佳的情况,其中云硬盘的性能是主要的参考指标之一,衡量云硬盘性能最主要的指标有二个:
指标 | 说明 | 单位 |
---|---|---|
IOPS | 每秒读/写次数,存储设备的底层驱动类型决定了不同的 IOPS。 | 次/s |
BW | 吞吐量,即每秒的读写数据量 | MB/s |
01 云硬盘性能测量工具
FIO是测试磁盘性能的一个非常好的工具,用来对硬件进行压力测试和验证。建议使用libaio的I/O引擎进行测试,
02 基于ECS安装FIO
在华为云上开通1c1g的ECS,系统盘选用SATA盘,操作系统选用centos7.3。
直接采用yum方式安装,
yum install libaio-devel fio
安装成功后,会提示安装的fio的版本号。
Installed: fio.x86_64 0:3.1-2.el7 libaio-devel.x86_64 0:0.3.109-13.el7
03 测试方法
硬盘的读写方式对性能指标应很大,考察硬盘的性能,可以从以下五个场景来测试:
连续读
随机读
顺序写
随机写
混合读写
通常连续读写要比随机读写表现更好,随机读写又比混合读写表现更好。
下面分别列出了五个场景的命令行:
连续读
fio -filename=/dev/vda -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=120 -group_reporting -name=mytest
随机读
fio -filename=/dev/vdb -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=120 -group_reporting -name=mytest
顺序写:
fio -filename=/dev/vda -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=60 -group_reporting -name=mytest
随机写:
fio -filename=/dev/vda -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=20G -numjobs=10 -runtime=60 -group_reporting -name=mytest
混合读写
fio -filename=/dev/vdb -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop
04 参数说明
参数 | 说明 |
---|---|
filename=/dev/vda | 挂载的硬盘设备 |
direct=1 | 测试过程绕过机器自带的buffer。使测试结果更真实。 |
rw=randwrite | 测试场景选择 |
bs=16k | 单次io的块文件大小 |
size=20G | 本次的测试文件大小为5g,以每次4k的io进行测试。 |
numjobs=30 | 测试线程 |
runtime | 测试时间选择,如果不选,则一直将参数szie指定大小的文件分4k每次写完为止。 |
ioengine=psync | io引擎使用pync方式 |
group_reporting | 关于显示结果的,汇总每个进程的信息 |
05 华为云性能测试结果
ECS挂载盘如下:
1、系统盘0 SATA 40G vda
2、数据盘1 SAS 40G vdb
3、数据盘2 SAS 40G vdc
选择不同的挂载盘进行测试,测试结果如下:
连续读
SATA
IOPS=5864, BW=96.1MB/s
SAS
IOPS=10.9k, BW=179MB/s
SSD
IOPS=20.2k, BW=330MB/s
随机读
SATA
IOPS=2209, BW=36.2MB/s
SAS
IOPS=5019, BW=82.2MB/s
SSD
IOPS=16.0k, BW=263MB/s
IOPS=16.1k, BW=264MB/s (第二次)
顺序写
SATA
IOPS=5818, BW=95.3MB/s
SAS
IOPS=9992, BW=164MB/s
SSD
IOPS=19.5k, BW=319MB/s
随机写
SATA
IOPS=2228, BW=36.5MB/s
SAS
IOPS=5017, BW=82.2MB/s
SSD
IOPS=14.8k, BW=242MB/s
混合读写
SATA
read: IOPS=1545, BW=25.3MB/s
write: IOPS=662, BW=10.9MB/s
SAS
read: IOPS=3526, BW=57.8MB/s
write: IOPS=1513, BW=24.8MB/s
SSD
read: IOPS=11.2k, BW=184MB/s
write: IOPS=4817, BW=78.9MB/s
read: IOPS=11.2k, BW=184MB/s
write: IOPS=4810, BW=78.8MB/s
06 测试结果解读
官方给的性能参考指标如下:
参数 | 普通 IO(SATA) | 高 IO (SAS) | 超高 IO(SSD) |
---|---|---|---|
最大 IOPS | 1000 | 3000 | 20000 |
最大吞吐量 | 90MBps | 150MBps | 350MBps |
SATA盘的最大IOPS为1000,实测在混合读写模式下,混合写的IOPS最低662,其他场景均超过了1000,在连续读的情况下,最大能达到5864.
SATA盘的吞吐量最大为90MB/S,这个指标只有在连续读和顺序写的场景下,才能达到。在混合读写的场景下,混合写的吞吐量最低,只能达到10.9MB/s。
SAS盘最大IOPS为3000,实测在混合读写的场景下,混合写的IOPS最低,只能达到1513,其他场景均接近或高于3000。
SAS盘吞吐量最大为150MBps,实测只有在连续读和顺序写的场景下,才能达到并略有超过,在混合读写的场景下,混合写的吞吐量最低,只能达到24.8MB/s.
SSD盘最大IOPS为20000,实测只有在连续读和顺序写的场景下,才能达到; 在混合读写的场景下,混合写的IOPS最低,只能达到4817,
SSD盘吞吐量最大为350MBps,实测只有在连续读的场景下,才能接近最大值,在混合读写的场景下,混合写的吞吐量最低,只能达到78.9MB/s。
综上所述,在混合读写的场景下,SSD的最低iops和bw均高于SATA盘数倍,SAS居中,客户根据自己的实际应用场景选择不同的硬盘类型。
SAS
SSD
保存到我的笔记
举报
- 点赞
- 收藏
- 关注作者
评论(0)