专业的测试磁盘IO性能的软件:
1、fio 【推荐使用】
2、iometer
fio的使用:
参考
http://www.linuxidc.com/Linux/2017-04/143255.htm
http://www.linuxidc.com/Linux/2017-04/143251.htm
注意,我先使用yum安装的fio,测试时候报错,建议使用最新版的fio工具编译安装。方法如下:
yum install libaio libaio-devel 需要先安装2个包
新版的 fio-2.1.4 源码包下载 http://brick.kernel.dk/snaps/
tar xf fio-2.1.4.tar.gz
cd fio-2.1.4
./configure
make 即可在当前目录下生成fio可执行文件。
fio的几个参数:
filename=/bdata/test.big 测试文件名称,通常选择需要测试的盘所在的目录。
direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机写和读的I/O
bs=4k 单次io的块文件大小为4k
size=2g 本次的测试文件大小为2g,以每次4k的io进行测试。
numjobs=64 本次的测试线程为64. 【建议设置为CPU的CORE数量一致】
runtime=20 测试时间为20秒,如果不写则一直将2g文件分4k每次写完为止。
ioengine=psync io引擎使用pync方式 ,此外还有libaio 异步方式。
rwmixwrite=30 在混合读写的模式下,写占30%
group_reporting 关于显示结果的,汇总每个进程的信息。
sync=1 设置异步io
fsync=1 一个io就同步数据
帮助命令:
fio –help
fio –cmdhelp 等等
# 准备个2GB的测试用的文件
dd if=/dev/zero of=/bdata/test.big bs=4k count=524288 # 通常在需要测试的那个磁盘下面生成一个这种测试用的大文件
测试随机读写:
fio –filename=/bdata/test.big -iodepth=64 -ioengine=libaio -direct=1 -rw=randwrite -bs=4k -size=2G -numjobs=64 -runtime=20-group_reporting -name=test-rand-write
测试顺序读取:
fio –filename=/bdata/test.big -iodepth=64 -ioengine=libaio –direct=1 –rw=read –bs=1m –size=2g –numjobs=4 –runtime=10 –group_reporting –name=test-read
测试顺序写性能
fio –filename=/bdata/test.big -iodepth=64 -ioengine=libaio -direct=1 -rw=write -bs=1m -size=2g -numjobs=4 -runtime=20 -group_reporting -name=test-write
测试随机读:
fio –filename=/root/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=/root/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randwrite -bs=4k -size=2G -numjobs=64 -runtime=20-group_reporting -name=test-rand-write
采用同步IO的随机写:
fio –filename=/root/rndwrite -iodepth=64 -ioengine=psync -direct=1 -rw=randwrite -bs=4k -size=2G -numjobs=32 -runtime=20 -group_reporting -name=test-rand-write
其他:
# 4k,100%读写:
fio –filename=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=4k –rwmixread=100 –iodepth=16 –numjobs=16 –runtime=60 –group_reporting –name=4ktest
# 8k,70%读取,30%写入:
fio –filename=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=8k –rwmixread=70 –iodepth=16 –numjobs=16 –runtime=60 –group_reporting –name=8k7030test
在阿里云SSD测试时候,使用libaio方式能达到较高的IOPS,使用psync的话,IOPS下降的很严重。从网上其他测试数据来看,异步的libaio比同步的psync方式性能高15倍左右。
附带一个MySQL DELL物理机的测试情况:
1 aio异步模式随机写入5G数据
测试命令:
fio –filename=/root/rndwrite -iodepth=64-ioengine=libaio -direct=1 -rw=randwrite -bs=4k -size=5G -numjobs=64-runtime=20 -group_reporting -name=test-rand-write
Samsung SSD 750 EVO 500GB盘为例,测试截图
2 psync同步模式随机写入5G数据
测试命令:
fio –filename=/root/rndwrite -iodepth=64-ioengine=psync -direct=1 -rw=randwrite -bs=4k -size=5G -numjobs=64 -runtime=20-group_reporting -name=test-rand-write
10.0.36.4 Samsung SSD 750 EVO 500GB盘为例,测试截图
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/143258.htm