小樱 发表于 2018/1/25 02:48

Linux下使用fio进行硬盘4K IOPS测速 VPS每秒随机读写速度测试 使用更可靠的随机非重复数据libaio异步引擎多线程

Linux下使用fio进行硬盘4K IOPS测速 VPS每秒随机读写速度测试 使用更可靠的随机非重复数据libaio异步引擎多线程

安装
yum -y install epel-release
yum -y install fio libaio-devel


提示,运行fio进程测试大概需要400M可用内存,如果1G内存的vps运行测试并且没有启用swap虚拟内存你会得到 fio: terminating on signal 的错误提示

用于文件读写速度测试
大文件测试随机读
fio --randrepeat=1 --ioengine=libaio --direct=1 --name=test --filename=test --bs=8M --size=512M --iodepth=1 --time_based --runtime=4 --group_reporting --rw=randread

   READ: bw=140MiB/s (147MB/s), 140MiB/s-140MiB/s (147MB/s-147MB/s), io=560MiB (587MB), run=4001-4001msec

大文件测试随机写
fio --randrepeat=1 --ioengine=libaio --direct=1 --name=test --filename=test --bs=8M --size=512M --iodepth=1 --time_based --runtime=4 --group_reporting --rw=randwrite

WRITE: bw=140MiB/s (147MB/s), 140MiB/s-140MiB/s (147MB/s-147MB/s), io=560MiB (587MB), run=4001-4001msec

额外的同时读写测试,请忽略此行,而且硬盘不是你想的同时读写,在读或者写的时候,另一个方向会进入等待,单通道的只是这个过程快的可能让人无法察觉,所以硬盘测速软件不都是一个一个显示速度,而不是同时测试
fio --randrepeat=1 --ioengine=libaio --direct=1 --name=test --filename=test --bs=8M --size=512M --iodepth=1 --time_based --runtime=4 --group_reporting --rw=randrw --rwmixread=50


用于IOPS读写次数测试,多线程模式
4K小文件IOPS测试随机读
fio --randrepeat=1 --ioengine=libaio --direct=1 --name=test --filename=test --numjobs=4 --bs=4k --size=12M --iodepth=1 --time_based --runtime=4 --group_reporting --rw=randread

   READ: bw=11.3MiB/s (11.9MB/s), 11.3MiB/s-11.3MiB/s (11.9MB/s-11.9MB/s), io=45.3MiB (47.5MB), run=4001-4001msec

4K小文件IOPS测试随机写
fio --randrepeat=1 --ioengine=libaio --direct=1 --name=test --filename=test --numjobs=4 --bs=4k --size=12M --iodepth=1 --time_based --runtime=4 --group_reporting --rw=randwrite

WRITE: bw=11.3MiB/s (11.9MB/s), 11.3MiB/s-11.3MiB/s (11.9MB/s-11.9MB/s), io=45.3MiB (47.5MB), run=4001-4001msec

主要就是看这个指标,其中括号的MB/s就是io速度了,至于iops那一段显示为什么不重要,可以看下面的巴拉巴拉
Run status group 0 (all jobs)

ipip群友提供的,并且自己改写了下命令换成libaio,可以测速硬盘4K小文件的iops,IOPS来说其实实际没什么意义,,主要还是IO速度,IO速度上去了自然IOPS也会上去,IOPS可以理解成每秒最大读写次数,例如反复需要读写的mysql数据库就需要4K读写,日志流水之类。
当然,DD命令不支持读取文件测速,fio却可以实现,各取所需吧,fio支持读取测试,,总体下来应该没毛病才对,当然iops也只是4K小文件上的东东了
真要说IOPS有什么不同的话,如果你稍微计算一下上图就会发现:
4K随机写入5.41MB/s,除以1384IOPS,刚好约等于4KB
所以归根到底还是等于了iops没什么卵用系列

注:fio测速可以受到上层物理机启用cache影响结果。
numjobs=4代表开启多线程测速
群友对randwrite参数的疑惑
你可以可以去掉 --rw=randwrite参数来试试,(默认值为rw=read 或指定使用 rw=write是完全顺序),--rw=randwrite 意思就是,比如2G文件总大小,每个文件大小是8M,那么要产生256次文件写入,每次写入数据为8M,如果带了此参数,就是1-256次的时候进行随机,例如1,108,36,75,203...,如果不加此参数,写入方式则变成顺序1,2,3,4,5...


例如
https://www.samsung.com/cn/memory-storage/870-qvo-sata-3-ssd/MZ-77Q2T0BCN/

DD命令IO测速(直接走硬件层检测不受上级设备缓存影响):http://bbs.itzmx.com/thread-5408-1-1.html

某hz服务器测速参考例子
https://bbs.itzmx.com/thread-98112-1-1.html

某vu服务器block块存储测速参考例子
https://bbs.itzmx.com/thread-99192-1-1.html

页: [1]
查看完整版本: Linux下使用fio进行硬盘4K IOPS测速 VPS每秒随机读写速度测试 使用更可靠的随机非重复数据libaio异步引擎多线程