一、文档概述 I/O压力测试工具,主要是用来测试磁盘/SSD的IO性能,linux下使用非常方便。 二、操作步骤测试流程 在测试前,将要测试的磁盘挂载到虚拟机的一个目录,然后创建一个文件,让数据有地方可以写入。在此例中为/tmp/test 0、安装fio工具 yum -y install fio 1、随机读,每次写入的块大小为4K,总共写20G,执行时间为60s fio -filename=/tmp/test -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=20G -numjobs=10 -runtime=60 -group_reporting -name=rand_100read_4k 2、随机写,每次写入的块大小为4K,总共写20G,执行时间为60s fio -filename=/tmp/test -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=20G -numjobs=10 -runtime=60 -group_reporting -name=rand_100write_4k 3、读写混合,70%随机读,30%随机写,每次写入的块大小为4K,总共写1G,执行时间为60s fio -filename=/tmp/test -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=4k -size=1G -numjobs=50 -runtime=60 -group_reporting -name=randrw_70read_4k 实例测试 例如:写1G大小的文件,进行100%随机读,每次写入的块大小为4K,执行时间为60s 第一步:先创建测试文件,touch/tmp/test 第二步:执行命令
fio -filename=/tmp/test -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=1G -numjobs=50 -runtime=60 -group_reporting -name=rand_100write_4k
第三步:以下为测试,可以看到刚才写入的参数会在测试报告中有所体现。 在这个报告中,我们主要参考的结果是:IOPS是每秒读的次数,bw为吞吐量 三、操作影响范围压测影响业务,可能还会损坏磁盘。 四、注意事项fio-filename= 的参数不能写磁盘盘符(如fio-filename=/dev/vdb),否则会导致该磁盘下目录数据损坏或丢失。 五、FAQ参数解析: A、-direct=1,表示不使用IObuffer,即缓存IO,而是使用directIO。大多数文件系统的默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,数据先从磁盘复制到内核空间的缓冲区,然后从内核空间缓冲区复制到应用程序的地址空间。直接IO就是应用程序直接访问磁盘数据,这种通常用于数据库管理系统;另外因为我们测试的是硬盘,而不是操作系统的Cache,绕过主机自带的buffer,测试结果更真实。 B、-iodepth1:默认队列深度为1,只有ioengine使用libaio(异步IO)且direct不设置为1时,iodepth设置为其他数值才有效果。 C、-thread:开启多线程性能测试 D、-rw=randread随机读(randwrite随机写、read顺序读、write顺序写) E、-ioengine=psync,使用的IO引擎为psync,即同步I/O F、-bs=4k :一次写入的块大小为4K G、-bsrange=512-2048:提定数据块的大小范围 H、-size=1G :写入数据的总大小(可以写100%) I、-numjobs=50 :50个线程同时写入 J、-runtime=180 :测试时长为180s K、-group_reporting :汇报每个进程的信息,在屏幕输出 L、-name=rand_100read_4k :生成的测试报告名称 |