这篇文章主要介绍压测ESSD云盘性能的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
如何压测ESSD云盘的性能
ESSD云盘,又称增强型(增强)SSD云盘,是阿里云全新推出的超高性能的云盘产品。由于压测云盘的性能时,云盘本身以及压测条件都起着重要的作用,因此本文提供了如何配置合适的条件压测ESSD云盘性能的示例,并测试出100个万IOPS。
警告:
测试裸盘可以获得真实的块存储盘性能,但直接测试裸盘会破坏文件系统结构,请在测试前提前做好数据备,例如,创建磁盘快照。建议您只在新购无数据的ECS实例上使用工具测试块存储性能,避免造成数据丢失。
为了充分发挥出多核多并发的系统性能,压测出100年万IOPS性能指标,您可以参阅以下建议测试ESSD云盘的性能。
您可以使用阿里云官方镜像中高版本的Linux镜像版本。例如,CentOS 7.4/7.3/7.2 64位和AliyunLinux 17.1 64位操作系统。由于对应的驱动还不够完善,不推荐使用其他低版本的Linux镜像和Windows镜像。
您可以使用FIO作为云盘性能标准的测试工具。
目前只有存储增强型g5se实例规格族支持挂载ESSD云盘,您需要申请加入使用存储增强型g5se实例规格族白名单。申请审核完成后,您便可以同时选购存储增强型g5se实例规格族和ESSD云盘。
以实例规格ecs.g5se。18 xlarge为例,同时ESSD云盘的设备名为/dev/vdb,示范通过随机写(randwrite)测试ESSD云盘的性能。
远程连接并登录到Linux实例。
运行以下命令安装libaio和FIO。
sudo yum安装libaio - y sudo yum安装libaio-devel - y 使用sudo yum安装fio - y
运行cd/tmp切换路径。
运行vim test100w。上海新建脚本文件,并粘贴以下内容,脚本为随机写randwrite IOPS性能测试示例。
RunFio函数 { numjobs=$ 1 #实例中的测试线程数,如示例中8的 iodepth=$ 2 #同时发出I/O数的上限,如示例中64年的 b=$ 3 #单次I/O的块文件大小,如示例中的4 k rw=$ 4 #测试时的读写策略,如示例中的randwrite 文件名=$ 5 #指定测试文件的名称,如示例中的/dev/vdb nr_cpus='猫/proc/cpuinfo | grep“processor"| wc - l ' 如果[$ nr_cpus lt numjobs美元); 回声“Numjobs比cpu核心,退出!“ 出口1 fi 让ν=$ numjobs + 1 cpulist=?“ ((i=1; i<10;我+ +)) 做 列表='猫/sys/block/一家/mq/*/cpu_list | awk & # 39;{如果(i<=NF)打印我美元;}& # 39;我=拔颐涝獆 tr - d & # 39; & # 39;| tr & # 39; \ n # 39;& # 39;& # 39;” 如果(美元- z列表); 打破 fi cpulist=$ {cpulist} ${}列表 完成 spincpu=' echo $ cpulist |切- d & # 39;, & # 39;- f 2 - ${ν}' echo $ spincpu fio ioengine=libaio——运行时=30年代——numjobs=$ {numjobs} iodepth=$ {iodepth} - b=$ {b} - rw=$ {rw}——文件名=${文件名}time_based=1 -直接=1 - name=测试——group_reporting cpus_allowed=$ spincpu——cpus_allowed_policy=分裂 } 回声2比;/sys/block/一家商业/队列/rq_affinity 睡5 RunFio 8 64 & # 39; 4 k # 39;& # 39;randwrite& # 39;& # 39;/dev/一家# 39;
注意:
因测试环境而异,脚本中您需要修改的命令行有:
命令行列表=猫/sys/block/一家/mq/*/cpu_list | awk & # 39;{如果(i<=NF)打印我美元;}& # 39;我=拔颐涝獆 tr - d & # 39; & # 39;| tr & # 39; \ n # 39;& # 39;& # 39;中的一家。
命令行RunFio 8 64 & # 39; 4 k # 39;& # 39;randwrite& # 39;& # 39;/dev/一家# 39;64年中的8日4 k, randwrite和/dev/vdb。
直接测试裸盘会破坏文件系统结构,如果云盘上的数据丢失不影响业务,可以设置文件名=[设备名,如本示例中的/dev/一家]。否,则请设置为文件名=[具体的文件路径,比如/mnt/测试。图片].
运行sh test100w。上海开始测试ESSD云盘性能。
<强>块设备参数强>
测试实例时,脚本test100w。上海中的命令回声2比;/sys/block/一家/队列/rq_affinity是将ECS实例中的块设备中的参数rq_affinity值修改为2:
参数rq_affinity的值为1时,表示块设备收到I/O完成(I/O)完成的事件时,这个I/O被发送回处理这个I/O下发流程的个vCPU所在群上处理。在多线程并发的情况下,I/O完成就可能集中在某一个个vCPU上执行,这样会造成瓶颈,导致性能无法提升。
参数rq_affinity的值为2时,表示块设备收到I/O完成的事件时,这个I/O会在当初下发的个vCPU上执行。在多线程并发的情况下,就可以完全充分发挥各个个vCPU的性能。