硬盘测试工具fio用法总结

一  fio介绍 linux下的一种常用的磁盘测试工具,支持裸盘和文件形式进行测试   二  硬盘测试常用名词 延迟:io的发起到返回写入成功的时间成为延迟,fio中延迟分为lat,slat,clat。 slat:提交延迟,表示硬盘将io提交到kernel需要的时间 clat:完成延迟,表示从kernel到io完成需要的时间。 lat:自slat开始至clat结束经历的时间。 吞吐:带宽的上限 带宽:单位时间内从一端到另一端的数据量,成为带宽。     三  常见参数 direct=1     //不使用文件系统缓存 iodepth      //io深度,线程向ssd发送多少个io请求,iodepth与接口有关,与介质无关,一般sata < 32; sas < 128; nvme <4096 rw             //值可以是write,read,randread,randwrite,randrw,当设置为rw时需指定rwmixread ioengine   //写入引擎,linux通常使用libaio bs            //最小写入块 numjobs   //开启多个线程同时写入 runtime     //限制任务运行的时间,若测试任务先于改时间结束,且未指定tmie_based ,则任务会直接退出 tmie_based //和runtime连用,若runtime未用完,会一直跑下去 loops           //循环,通常不和runtime连用 ramp_time        //在执行测试前忽略的时间 ioscheduler   //io调度算法 iodepth_batch     //默认是iodepth的值 iodepth_batch_complete        //io请求过来后,能retrieve获得的最多请求数; ipdepth_low         //io请求达到这个水平线后,开始尝试去补充和获取请求,默认是iodepth的值; max_latency      //最大延迟,当延迟超过该值,fio会自动退出 latency_target=int             //目标延迟,最大可接受的延迟,单位微秒 latency_window=int          //延迟窗口,工作在不同队列深度下测试性能的窗口,单位微妙 latency_percentile=float   //延迟时间百分比,默认为100.0,意味着所有IO延迟必须等于或低于目标设置的值。    四   常用参数理解  4.1   iodepth iodepth即队列深度,机械硬盘不支持异步写入,该值对机械硬盘无意义。固态硬盘是支持异步处理的,同时可以处理多个io请求,iodepth可以控制io队列的深度,增大该值可以提高读写性能,但随着iodepth的增大,延迟同样也会增大。 4.2   延迟 固态硬盘产品手册能达到的最大读写和iops是理想单盘情况下能达到的最大值,但是实际生产使用中,因为raid,阵列卡缓存,写入延迟的影响,通常使用过程中的写入性能是低于产品手册的,我们可以通过fio设置latency_target,latency_window,latency_percentile等值,在实际的应用场景下模拟生产业务要求进行写入测试   五   fio测试结果分析 硬盘测试工具fio用法总结硬盘测试工具fio用法总结硬盘测试工具fio用法总结硬盘测试工具fio用法总结 usec/msec      //时间单位,微秒,毫秒 stdev              //标准差 clat percentiles  //写入延迟分布情况 ctx       //进程上下文切换次数 majf/minf            //主要和次要页面错误数量 submits/complete             //代表同一时间段内fio发送上去和已完成的io数量,此处小于4(可能是1)可能和收割参数有关 issued                //发送的io总量 aggrb                        //group总带宽 minb                //最小平均带宽. mint                   //group中线程的最短运行时间. ios                    //所有group总共执行的IO数. merge                    //总共发生的IO合并数. in_queue            //花费在队列上的总共时间. util                     //磁盘利用率     六  测试示列   fio -filename=/dev/sdb -direct=1 -iodepth=128 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=100G -numjobs=8 -runtime=6m -ramp_time=60 -group_reporting -name=mytest -iodepth_batch_complete=16    fio -filename=/data/tempfile.dat -direct=1 -iodepth=128 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=100G -numjobs=8 -runtime=6m -ramp_time=60 -group_reporting -name=mytest -iodepth_batch_complete=16 -latency_target=4000 -latency_window=50000000 -latency_percentile=99           //限定99%的io请求延迟在4毫秒下         参考链接   https://fio.readthedocs.io/en/latest/fio_doc.html#i-o-depth  https://github.com/axboe/fio/commit/3e260a46ea9a8de224c3d0a29a608da3440f284a        

上一篇:31 | 套路篇:磁盘 I/O 性能优化的几个思路


下一篇:注册表大法!教你如何给 Win11 开启传统右键菜单