压测ESSD云盘性能的方法

  介绍

这篇文章主要介绍压测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云盘性能。

压测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的性能。

压测ESSD云盘性能的方法