首页 > 代码库 > Linux下 fio磁盘压测笔记

Linux下 fio磁盘压测笔记

专业的测试磁盘IO性能的软件:

1、fio 【推荐使用】

2、iometer


fio的使用:

参考博客: http://lilinji.blog.51cto.com/5441000/1569623

https://linux.die.net/man/1/fio

http://elf8848.iteye.com/blog/2168876   【讲的比较好】


注意,我先使用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://lee90.blog.51cto.com/10414478/1920328

Linux下 fio磁盘压测笔记