技术分享

金山云 > 推荐阅读 > 队列深度对磁盘IOPS的影响

队列深度对磁盘IOPS的影响

发布时间: 2019-11-05 13:58:41

FIO是用来测试磁盘IO性能比较常用的工具,它的强大之处在于提供了一套测试框架,能够支持多线程多进程的IO测试,用户只需进行参数的配置,便能够方便地定制不同的IO行为(顺序读写,随机读写等),并对其性能进行监测。

队列深度对磁盘IOPS的影响.png

 此次我们来测试金山私有云KingStack某套环境下SSD磁盘的4KB随机写的IOPS,验证一下增加队列深度对磁盘性能的影响。加大磁盘队列深度就是让磁盘不断工作,减少磁盘的空闲时间。

一、FIO测试命令:

 测试命令为:[root@KingStack-FIO ~]# fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randwrite -size=1000G -filename=/dev/vdb -name="KingStack EBS 4K randwrite test" -iodepth=1 -runtime=60

简单介绍一下FIO的参数: ioengine: 负载引擎,一般使用libaio,发起异步IO请求。
bs: 单次IO的块文件大小为4K。
direct: 绕过操作系统Cache。因为我们测试的是磁盘,而不是操作系统的Cache,所以设置为

1、使测试结果更真实。

rw: randwrite 测试随机写的I/0。
size: 寻址空间,一般设置为磁盘的大小。
filename: 测试对象。
iodepth: 队列深度,只有使用libaio时才有意义。这是一个可以影响IOPS的参数。
runtime: 测试时长。

2、测试分析

下面我们做两次测试,分别 iodepth = 1和iodepth = 4的情况。下面是iodepth = 1的测试结果。
微信截图_20191010141042.png

 上图中蓝色方框里面是测出的IOPS 4235, 青色方框里面是每个IO请求的平均响应时间,大约是0.22ms。黄色方框表示95%的IO请求的响应时间是小于等于 0.474 ms。紫色方框表示该磁盘的利用率已经达到了91.85%。

下面是 iodepth = 4 的测试: 1.png

 我们发现这次测试的IOPS所有提高,IO平均响应时间也变大一些。为什么这里提高队列深度起到作用了language呢,原因当队列深度为1时,磁盘的利用率才达到91.85%,说明磁盘还有很多空闲时间可以压榨。对于SSD磁盘,当增加队列深度时,会增加IOPS,同时也会增加响应时间,但达到一定程度后,IOPS反而会下降,此时IO平均响应时间增加较大,因为磁盘利用率已经达到一个稳定状态了。
 下面是对一块SSD磁盘的4K随机写性能统计: 2.png

3、结论

3.1、增加队列深度,可以看到IOPS不会随着队列深度的增加而一直增加,达到一定值后会有所下降。 3.2、增加队列深度,可以测试出磁盘的峰值。

以上就是金山云为您带来的推荐阅读的全部内容,如果还想了解更多内容可访问金山云官网www.ksyun.com了解其它资讯。
*免责声明:部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快处理。