Michael_Tong
近期目标:按时吃药,努力做个正常人。

工作中发现一个fio问题,测试组测试出来的数据read速度一个是17.0G/s,一个是13.2G/s。要知道我后台只有24块7.2k RPM的机械硬盘啊!怎么也不可能有这样的速度。

回家之后我模拟了实际情况,结果重现了这个情况:

首先执行fio -filename=/tmp/test -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=1M -size=20G -numjobs=50 -runtime=60 -group_reporting -name=sqe_100write
测得结果WRITE: bw=81.8MiB/s (85.7MB/s), 81.8MiB/s-81.8MiB/s (85.7MB/s-85.7MB/s), io=4948MiB (5188MB), run=60523-60523msec
注意:fio write仅写入4948MiB,结果正常。
然后执行fio -filename=/tmp/test -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=1M -size=20G -numjobs=50 -runtime=60 -group_reporting -name=sqe_100read
前33s read速度约为200M/s,之后速度飙升至10GB/s,最终结果达到6354MiB/s。【我现在的内存就是DDR3-800,带宽就是6.4GB/s】
结果为什么错误?
因为第一次执行fio的时候已经write了/tmp/test文件,但是仅写入了4948MiB,然后我偷懒,直接使用这个文件进行fio read测试。fio检查文件存在并且大小合适,所以fio read首先读取了4948MiB,剩下的就不知道从哪里读取了!可能从内存!所以得到的结果炒鸡高,偏离了实际数据。

 

实际上执行fio -filename=/tmp/newfile -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=1M -size=20G -numjobs=50 -runtime=60 -group_reporting -name=sqe_100read

时,最好是不存在/tmp/newfile这个文件,此时fio会先自己生成/tmp/newfile文件然后测试,数据是准确的。

记录问题,以后避免。

posted on 2018-10-28 01:00  Michael_Tong唐唐  阅读(1287)  评论(0编辑  收藏  举报