0

0

如何简单快速的压测 ESSD 云盘的性能

坏嘻嘻

坏嘻嘻

发布时间:2018-09-29 15:08:46

|

3955人浏览过

|

来源于php中文网

原创

本篇文章给大家带来的内容是关于如何简单快速的压测 essd 云盘的性能,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

如何压测 ESSD 云盘的性能

ESSD 云盘,又称增强型(Enhanced) 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.18xlarge 为例,同时 ESSD 云盘的设备名为 /dev/vdb,示范通过随机写(randwrite)测试 ESSD 云盘的性能。

远程连接 并登录到 Linux 实例。

运行以下命令安装 libaio 和 FIO。

sudo yum install libaio –y
sudo yum install libaio-devel –y
sudo yum install fio -y

运行 cd /tmp 切换路径。

运行 vim test100w.sh 新建脚本文件,并粘贴以下内容,脚本为随机写 randwrite IOPS 性能测试示例。

function RunFio
{
 numjobs=$1  # 实例中的测试线程数,如示例中的 8
 iodepth=$2  # 同时发出I/O数的上限,如示例中的 64
 bs=$3       # 单次I/O的块文件大小,如示例中的 4K
 rw=$4       # 测试时的读写策略,如示例中的 randwrite
 filename=$5 # 指定测试文件的名称,如示例中的 /dev/vdb
 nr_cpus=`cat /proc/cpuinfo |grep "processor" |wc -l`
 if [ $nr_cpus -lt $numjobs ];then
     echo "Numjobs is more than cpu cores, exit!"
     exit -1
 fi
 let nu=$numjobs+1
 cpulist=""
 for ((i=1;i<10;i++))
 do
     list=`cat /sys/block/vdb/mq/*/cpu_list | awk '{if(i<=NF) print $i;}' i="$i" | tr -d ',' | tr '\n' ','`
     if [ -z $list ];then
         break
     fi
     cpulist=${cpulist}${list}
 done
 spincpu=`echo $cpulist | cut -d ',' -f 2-${nu}`
 echo $spincpu
 fio --ioengine=libaio --runtime=30s --numjobs=${numjobs} --iodepth=${iodepth} --bs=${bs} --rw=${rw} --filename=${filename} --time_based=1 --direct=1 --name=test --group_reporting --cpus_allowed=$spincpu --cpus_allowed_policy=split
}
echo 2 > /sys/block/vdb/queue/rq_affinity
sleep 5
RunFio 8 64 '4k' 'randwrite' '/dev/vdb'

注意:

因测试环境而异,脚本中您需要修改的命令行有:

Red Panda AI
Red Panda AI

AI文本生成图像

下载

命令行 list=cat /sys/block/vdb/mq/*/cpu_list | awk '{if(i

命令行 RunFio 8 64 '4k' 'randwrite' '/dev/vdb' 中的 8、64、4k、randwrite 和 /dev/vdb。

直接测试裸盘会破坏文件系统结构,如果云盘上的数据丢失不影响业务,可以设置 filename=[设备名,如本示例中的/dev/vdb]。否则,请设置为 filename=[具体的文件路径,比如/mnt/test.image]。

运行 sh test100w.sh 开始测试 ESSD 云盘性能。

微信截图_20180929150750.png

脚本解读

块设备参数

测试实例时,脚本 test100w.sh 中的命令echo 2 > /sys/block/vdb/queue/rq_affinity 是将 ECS 实例中的块设备中的参数 rq_affinity 值修改为 2:

参数 rq_affinity 的值为 1 时,表示块设备收到 I/O 完成(I/O Completion)的事件时,这个 I/O 被发送回处理这个 I/O 下发流程的 vCPU 所在 Group 上处理。在多线程并发的情况下,I/O Completion 就可能集中在某一个 vCPU 上执行,这样会造成瓶颈,导致性能无法提升。

参数 rq_affinity 的值为 2 时,表示块设备收到 I/O Completion 的事件时,这个 I/O 会在当初下发的 vCPU 上执行。在多线程并发的情况下,就可以完全充分发挥各个 vCPU 的性能。

绑定对应的 vCPU

普通模式下,一个设备(Device)只有一个请求列表(Request-Queue)。在多线程并发处理 I/O 的情况下,这个唯一的 Request-Queue 就是一个性能瓶颈点。

最新的多队列(Multi-Queue)模式下,一个设备(Device)可以拥有多个处理 I/O 的 Request-Queue,可以充分发挥后端存储的性能。如果您有 4 个 I/O 线程,您需要将 4 个线程分别绑定在不同的 Request-Queue 对应的 CPU Core 上,这样就可以充分利用 Multi-Queue 提升性能。

为了充分发挥设备(Device)的性能,需要将 I/O 线程分发到不同的 Request-Queue 上处理。脚本 test100w.sh 中通过 fio --ioengine=libaio --runtime=30s --numjobs=${numjobs} --iodepth=${iodepth} --bs=${bs} --rw=${rw} --filename=${filename} --time_based=1 --direct=1 --name=test --group_reporting --cpus_allowed=$spincpu --cpus_allowed_policy=split 分别将几个 jobs 绑定不同的 CPU Core 上,其中 vd* 为您的云盘设备名,例如,/dev/vdb。

FIO 提供了参数 cpus_allowed 以及 cpus_allowed_policy 用来绑定 vCPU。以上命令一共运行了几个 jobs,分别绑定在几个 CPU Core上,分别对应着不同的 Queue_Id。

关于如何查看 Queue_Id 绑定的 cpu_core_id,您可以:

运行 ls /sys/block/vd*/mq/ 查看设备名为 vd* 云盘的 Queue_Id,例如 vdb。

运行 cat /sys/block/vd*/mq/*/cpu_list 查看对应设备名为 vd* 云盘的 Queue_* 绑定到的 cpu_core_id。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

0

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

0

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

2

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

6

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

18

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

3

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

2

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

1

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.3万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号