fio

本文详细介绍了fio工具的安装、使用方法及其参数含义,包括如何创建虚拟硬盘进行测试。fio可以绕过缓冲区进行直接I/O测试,支持多种I/O模式和块大小设置。通过配置文件或命令行参数,可以调整测试的设备、线程数、运行时间和数据量等。fio还允许测试文件内的I/O性能,而非仅限于设备。文章还讨论了不同ioengine的使用场景,如libaio和psync,并澄清了一些常见误解。
摘要由CSDN通过智能技术生成

在写之前插个接口问题,自己还不清楚区别:

u2interface. msata interface.m2接口是sata简化接口。u2是新的接口,中间有突起,使用的是nvme协议,但是怎么使用的?数据线都没有 ,但是说是兼容好几种: 是否需要转换头也不知道。没使用过。


fio使用的时候,可以在ubuntu中使用sudo apt-get install  fio即可,而如果下载源码,那么wget http://brick.kernel.dk/snaps/fio-2.1.10.tar.gz(摘录其他人的博客)然后三步骤执行:./config      make     make install   如果想自己修改,那么可以修改完再次make  再次make install就会更换为新的版本。

fio简单的一次性命令为:fio -filename=/dev/sdb1 -direct=1 -iodepth=8 -thread -rw=read -ioengine=psync -bs=4k -size=100G -numjobs=30  -runtime=1000 -group_reporting -name=mytest

fio -output=磁盘路径

注意事项和说明:

1)测试只能测试设备不能测试一个设备中的文件目录。就是目录不能当成fio的测试对象.(这句话严重错误,可以测盘内文件的,也可以裸盘测试,即不带文件系统的测试,那样测完盘需要重新格式化。)

因此给出快速模拟出一个虚拟硬盘的方法,用于测试使用,步骤如下(注意使用dd命令没有-开头。。而fio中除了job file中写,命令行的参数前面必须有-)。 

dd if=/dev/zero  of=~/testforfio-4GB.img     bs=4M     count=1024

mkfs.ext4  testforfio-4GB.img 

sudo mount -o loop testforfio-4GB.img   ~/testforfio

此处需要强调:是使用testforfio-4GB.img挂载完了之后才会在df -h中显示出来/dev/loop0 这个设备就是将testforfio-4GB.img给使用/dev/loop0对应的驱动操作。所以不可以使用:  sudo mount -o loop   /dev/loop0   ~/testforfio

2)filename 是测试的盘符,direct=1表示绕过机器的buffer 不使用pagecache, rw=randwrite 或者randread或read 或write(不带rand的代表顺序读写)或者randrw表示随机读写 bs=4k表示单次io的块文件大小为4k. bsrange=512-2048表示指定了io块的大小范围。size=5G 表示该次测试总量的大小是5G(又有说明是每个进程跑5G的量??) numjobs表示使用线程是30个   runtime=100表示100秒结束,当然要与总量相比,如果不写runtime就是一次把5G总量写完为止。 ioengine=psync 表示io引擎使用psync方式  rwmixwrite=30表示混合读写下写占了30%  group_reporting  关于显示结果的,汇总每个进程信息,注意此处是汇总,而不是显示每个进程信息。如果想显示每个进程的如numjobs=5那么不用group_reporting就会将所有的信息显示5份然后加上最后的汇总如果用了group_reporting那么就是不会显示5份只有总的。 lockmem=1G 表示只使用1G内存进行测试  zero_buffers表示用0初始化buffer nrfiles=8表示每个进程生成文件数量。

对于低版本的fio2.多版本对于-group_reporting会出错,必须不加-才行。。。这个是版本错误。

另外写法中:–iodepth 2 或是 –iodepth=2.效果都是一样的。


如果想得到fio中每次io的lat时间,(当然clat和slat也能得到)。则在框架

在io_u.c文件中
static void io_completed(struct thread_data *td, struct io_u *io_u,

struct io_completion_data *icd)函数中

----------------------》

在io_u.c文件中

static void account_io_completion(struct thread_data *td, struct io_u *io_u,
  struct io_completion_data *icd,

  const enum fio_ddir idx, unsigned int bytes)

-------------------------》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值