测试命令
-
安装fio
yum install -y fio
-
获取filename
fdisk -l
-
小文件4k单job 更能够体现测试磁盘延时
# 随机读 fio --ioengine=libaio --bs=4k --size=40G --iodepth=1 --numjobs=1 --direct=1 --group_reporting --runtime=120 --name=4klat_randread --rw=randread --filename=/tmp/test5 # 随机写 fio --ioengine=libaio --bs=4k --size=40G --iodepth=1 --numjobs=1 --direct=1 --group_reporting --runtime=120 --name=4klat_randwrite --rw=randwrite --filename=/tmp/test6
-
小文件4k多job 更能体现IOPS(每秒处理次数)
# 随机读 fio --ioengine=libaio --bs=4k --size=40G --iodepth=64 --numjobs=4 --direct=1 --group_reporting --runtime=120 --name=4kiops_randread --rw=randread --filename=/tmp/test7 # 随机写 fio --ioengine=libaio --bs=4k --size=40G --iodepth=64 --numjobs=4 --direct=1 --group_reporting --runtime=120 --name=4kiops_randwrite --rw=randwrite --filename=/tmp/test8
-
大文件4M单job 更能体现磁盘的吞吐性能
# 随机读 fio --ioengine=libaio --bs=4M --size=40G --iodepth=64 --numjobs=1 --direct=1 --group_reporting --runtime=120 --name=4kio_randread --rw=randread --filename=/tmp/test9 # 随机写 fio --ioengine=libaio --bs=4M --size=40G --iodepth=64 --numjobs=1 --direct=1 --group_reporting --runtime=120 --name=4kio_randwrite --rw=randwrite --filename=/tmp/test10
指标说明
指标 | 说明 |
---|---|
IOPS | 每秒的输入输出量(或读写次数) |
Bw | 带宽 |
slat | 表示fio 提交到内核某个I/O的延迟,单位us微秒 |
clat | 表示fio 内核完成某个I/O的延迟,单位us毫秒 |
lat | 表示从fio将请求提交给内核,再到内核完成这个I/O为止所需要的时间 lat = slat + clat,单位us毫秒 |
示例说明
- 填表示例:
- 分析示例
指标 | 说明 |
---|---|
4K1jobs随机读 | A云IOPS数量和带宽约是B云的2.4倍,延时约是B云46% 4K1jobs随机写:A云IOPS数量和带宽约是B云的1.11倍,延时约是B云89% |
4K4jobs随机读 | A云IOPS数量和带宽约是B云的2.66倍,延时约是B云37% 4K4jobs随机写:A云IOPS数量和带宽约是B云的2.76倍,延时约是B云36% |
4M1jobs随机读 | A云IOPS数量和带宽约是B云的1.12倍,延时约是B云89% 4M1jobs随机写:A云IOPS数量和带宽约是B云的1.12倍,延时约是B云62% |
小文件单job 更能够体现测试磁盘延时。A云的读延时更低,写延时差距不大
小文件多job 更能体现IOPS(每秒处理次数)。在读和写两个方面A云都优于B云
—— 像etcd这种io密集型的软件会受此影响
大文件单job 更能体现磁盘的吞吐性能。A云和B云差距不大
—— 像copy大文件速度会受此影响