对于FIO,其是一个10测试工具,可以运行在多种操作系统上,用来测试本地磁盘、
网络存储等的性能。FIO有以下基本概念,大家可以先了解一下:
1、基本概念
I/O类型-顺序读、顺序写、随机读、随机写
块大小-读写时规定的block size,一般为512B、4K、16K
I/O size-一次读写多大的数据,即每次io请求要读写多少数据,一般是1K/4K...
1M/4M等大小。
I/O引擎(I/O engine)-使用1/O引擎就是使用某些函数,以某些特定方式来访问存
储,不同的1/O引擎有不同的使用场景。比如Linux 可以使用 libaio,sync,psync等
I/O 深度(1/O depth)-一次提交要提交多少个1/O请求,仅对异步1/0引擎有用,
因为同步1/O总是会等待提交的1/O请求返回了再提交下一个1/O请求,所以iodepth
总是1.
对于I/Odepth,并不是越大越好,需要选择一个合适的值,其原因如下:
随着iodepth的增大在一定范围内,带宽、io延时会增加,超过一定范围后带宽增
加缓慢,延时继续会增加。延时增加的原因是因为随着 iodepth增加都需花更多的时间
等待请求io数量达到iodepth数值后,才会真正把io请求发送给存储,所以平均每一
个io的延时都会增大了
带宽之所以会提高可能主要与网络延时有关,如果每次只发一个io请求,那么完
成这一次io请求的时间=收发延时+io请求执行时间,如果没有延时则每秒客户端
可以完成1000次请求,但是加上收发延时后,每秒的请求次数必然减少。但是如果将
每次io 请求数量增加,比如一次发10个请求,那么这10次请求时间花费=等待10
个io请求+1次收发延时+10次io请求执行时间,而10次单个的io请求时间=10
次收发延时+10次io请求执行时间。如果等待10个io请求时间低于9次收发延时,
那么每秒能够完成的io请求时间就会增加,也就会增加带宽
线程/进程-测试任务中要开启多少个进程/线程
2、SSD测试
对于SSD,测试时其主要的参数选择如下所示:
对于顺序读写,block一般选择128K;对于随机读写,block一般选择4K;对于SSD,
其写单位是page,大小是4KB,而擦除单位是block,大小为512K;
SSD 在测试之前一般要进行预处理。若需要顺序读写测试,则需要先进行2 遍顺序读
写;若为随机读写,则需要进行顺寻读写1遍+随机读写1遍;
对于队列深度,一般选择16-32,这是绝大多数存储厂商的均数。当队列深度太浅时,
无法饱满测试性能,当队列深度太深时,则带宽比较饱满;
对于job(线程)和work(进程),对于顺序读写时,两者都选择为1;对于随机读写
时,一般时job=1 work=12 或者 job=12 work=1;
参考链接:
https://blog.csdn.net/MrSate/article/details/53292102
https://blog.csdn.net/kunkliu/article/details/101019585
https://www.cnblogs.com/morgan363/p/12192159.html