1. 安装fio:http://www.bluestop.org/fio/ 可以选择不同版本的安装,安装后在C:\Program Files\fio目录中可以找到fio的执行程序和相应的文档。fio.exe 会自动 加入环境变量中
2. 使用
找到要测试的磁盘的序号:
powershell 输入 diskpart进入磁盘工具
list disk 显示所以的磁盘编号
选择没有分区的磁盘(fio 在qwindows上只能测试没有分区的磁盘)
所有我们选择 disk 1 进行测试
测试脚本
1 fio --name=test --rw=randrw --direct=1 --iodepth=8 --blocksize=1024k --ioengine=windowsaio --filename=\\.\PhysicalDrive1 --numjobs=1 --refill_buffers --norandommap --randrepeat=0 --rwmixread=0 --group_reporting --runtime=600 --thread
各参数的含义
--name 为测试起一个名字
--rw 读写的形式 --rw=write 连续写 --rw=randwrite 随机写 --rw=read 连续读 --rw=randread 随机读 --rw=randrw 随机读写 取决于后面的读写比例
--direct=1 1 表示不使用缓存
--iodepth=8 每个测试线程的队列深度
--blocksize io的大小
--ioengine=windowsaio IO引擎是Windows的异步IO引擎
--filename=\\.\PhysicalDrive1 这里就是我们要测试的磁盘
--numjobs=1 同时测试的线程数量(这个值乘以上面的iodepth就是对磁盘产生的实际队列深度,这里1X8,所以实际队列深度为8)
--refill_buffers 这个选项告诉fio将在每次submit之后都会将重新填满IO buffer。否则fio会在初始时填满,以后重复利用
--norandommap 般情况下,fio在做随机IO时,将会覆盖文件/磁盘的每一个block。如果这个选项设置的话,fio将只是获取一个新的随机offset,而不会查询过去的历史。这意味着一些块可能没有读或写,一些块可能要读/写很多次。
--randrepeat=0 对于随机IO负载,配置生成器的种子,使得路径是可以预估的,使得每次重复执行生成的序列是一样的。
--rwmixread=0 随机读写的读写比率。0,表示100%写,这个值设置为100 表示百分百读
--group_reporting 报道结果
--runtime=600 测试的时间
--thread 由于使用了多线程 所以要加上这个参数
从上面的报告可以看出,IOPS平均值为 153 带宽利用率 为 162Mb/s 56.87%的延时在50ms
例子
1 全盘1024KB随机读 2 fio --name=test --rw=randrw --direct=1 --iodepth=8 --blocksize=1024k --ioengine=windowsaio --filename=\\.\PhysicalDrive1 --numjobs=8 --refill_buffers --norandommap --randrepeat=0 --rwmixread=100 --group_reporting --runtime=180 --thread 3 全盘128KB连续读 4 fio --name=test --rw=read --direct=1 --iodepth=8 --blocksize=128k --ioengine=windowsaio --filename=\\.\PhysicalDrive1 --numjobs=8 --group_reporting --runtime=1800 --thread 5 全盘128KB连续写 6 fio --name=test --rw=write --direct=1 --iodepth=8 --blocksize=128k --ioengine=windowsaio --filename=\\.\PhysicalDrive1 --numjobs=8 --group_reporting --runtime=1800 --thread
完整的使用请看 安装目录下的参考文档 HOWTO
centos 下安装
yum install -y fio
原文:https://www.cnblogs.com/fayuzhang/p/11310808.html