FIO 源码解读

       最近在项目中需要测试SSD相关的性能API以及相应的模块,为了更加通用,通过向FIO添加plug-in的方式进行测试,只能先去看懂FIO针对plug-in的测试原理,主要以ioengine-libaio进行介绍.

      1.数据结构

          1.thread_data(fio/fio.h):主要有两个作用:

              1.用来接收由command line传递的参数;并传递给新的线程或进程fio job;

              2.描述以一个线程(pthread)/进程(process)为单位的fio job;

         2. io_u(io_u.h):  一个io request unit的描述符,主要用来管理由command line传递下来的参数所生成的io request,需要注意的是在编写fio plug-in时,需要在该结构体中定义iocb(例如:libaio的io request unit)

                 struct io_u {

                        ...;

                        union {
                              #ifdef CONFIG_LIBAIO
                                  struct iocb iocb;
                             #endif
                       };
                };

        3.fio_file(file.h):描述与thread_data相关的file(一个file/device的描述结构体)

              struct fio_file {
                  ...;

              };

        4.libaio中定义的相关结构体

2. io流程

      1.FIO 根据在command line中得到的options, 经过parse command line,把相关参数fill到struct thread_options

      2.在do_io中,调用get_io_u填充struct io_u,并且发送到backend(libaio)去prepare aio的io unit单位(iocb)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值