fio磁盘io压测工具
fio磁盘io压测工具
fio磁盘io压测工具
io测试工具支持同步(pread/pwrite)和异步(libaio)FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。
fio 官网地址:http://freshmeat.net/projects/fio/
1 安装
yum install fio -y
1.1 常用参数说明
不同场景的测试公式基本一致,只有 rw、iodepth 和 bs(block size)三个参数的区别。例如,每个工作负载适合最佳 iodepth 不同,取决于您的特定应用程序对于 IOPS 和延迟的敏感程度。
参数名 | 说明 | 样例 |
---|---|---|
bs | 每次请求的块大小。取值包括4k,8k,16k等。 | 4k |
ioengine | I/O 引擎。推荐使用 Linux 的异步 I/O 引擎。 | libaio |
iodepth | 请求的 I/O 队列深度。 | 1 |
direct | 指定 direct 模式。True(1)表示指定 O_DIRECT 标识符,忽略 I/O 缓存,数据直写。False(0)表示不指定 O_DIRECT 标识符。默认为 True(1)。 | 1 |
rw | 读写模式。取值包括顺序读(read)、顺序写(write)、随机读(randread)、随机写(randwrite)、混合随机读写(randrw)和混合顺序读写(rw,readwrite)。 | read |
time_based | 指定采用时间模式。无需设置该参数值,只要 FIO 基于时间来运行。 | N/A |
runtime | 指定测试时长,即 FIO 运行时长. | 300 |
refill_buffers | FIO 将在每次提交时重新填充 I/O 缓冲区。默认设置是仅在初始时填充并重用该数据。 | N/A |
norandommap | 在进行随机 I/O 时,FIO 将覆盖文件的每个块。若给出此参数,则将选择新的偏移量而不查看 I/O 历史记录。 | N/A |
randrepeat | 随机序列是否可重复,True(1)表示随机序列可重复,False(0)表示随机序列不可重复。默认为 True(1)。 0 | |
group_reporting | 多个 job 并发时,打印整个 group 的统计值。 | N/A |
name | job 的名称。 | fio-read |
size | I/O 测试的寻址空间。不指定的时候,会全盘测试。如果是文件测试,不指定大小的话,会报错。 | 100G |
filename | 测试对象,即待测试的磁盘设备名称。 | /dev/sdb |
numjobs | 测试进程数量 | 16 |
2 命令使用
2.1随机读的模式:
fio -filename=test.file -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=10G -numjobs=10 -runtime=60 -group_reporting -name=test
2.2随机写的模式:
fio -filename=test.file -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=10G -numjobs=10 -runtime=60 -group_reporting -name=test
3 裸盘带宽测试(顺序读写)
3.1 顺序写
fio --numjobs=16 -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=write -time_based -runtime=300 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-write-throughput -filename=/dev/vdb
3.2 顺序读
fio --numjobs=16 -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=read -time_based -runtime=300 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-read-throughput -filename=/dev/vdb
3.3 裸盘延迟
3.3.1写延迟
fio --numjobs=16 -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randwrite -time_based -runtime=300 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-lat -filename=/dev/vdb
- 感谢你赐予我前进的力量