在购买云服务器的时候,会比较关注磁盘的IO性能,当然是选择读写快的,在Windows中有不同的工具来测试,但在Linux还是用命令来检测了,以下两条命令分别为磁盘的随机性能测试,分别为读和写。能较快的反映出的磁盘读写性能,做个备忘。当然,这不是最好的方法,还有其他方法,这个我用着最便捷了。

一般该性能测试分为两类,一类是顺序读写,一类是随机读写,各有所需。我是以随机读写为主的。

随机读:

fio -filename=/home/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randread -bs=4k -size=2G -numjobs=64 -runtime=20 -group_reporting -name=test-rand-read

随机写:

fio -filename=/home/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randwrite -bs=4k -size=2G -numjobs=64 -runtime=20 -group_reporting -name=test-rand-write

参数说明

filename=/home/test 测试文件名称,通常选择需要测试的盘的data目录。
direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机写和读的I/O
bs=4k 单次io的块文件大小为4k
size=2g 本次的测试文件大小为2g,以每次4k的io进行测试。
numjobs=64 本次的测试线程为64.
runtime=20 测试时间为20秒,如果不写则一直将2g文件分4k每次写完为止。

测试结果

fio的结果报告内容丰富,如下图所示:

随机读:
使用fio测试Linux主机磁盘IO性能  -  轻松掌握主机磁盘指标
随机写:
使用fio测试Linux主机磁盘IO性能  -  轻松掌握主机磁盘指标

因报告内容丰富,而我们只需要关注以下两项即可:
bw:磁盘的吞吐量,这个是顺序读写考察的重点
iops:磁盘的每秒读写次数,这个是随机读写考察的重点

比如,下面是4个测试的结果部分截取:

test-read: (groupid=0, jobs=4): err= 0: pid=4752
read : io=839680KB, bw=76823KB/s, iops=75 , runt= 10930msec

随机读,带宽3457.4KB/s, iops=864
test-rand-write: (groupid=0, jobs=64): err= 0: pid=4685
write: io=129264KB, bw=6432.4KB/s, iops=1608 , runt= 20097msec

随机写,带宽6432.4KB/s, iops=1608

完。