阿里云8核16GB云服务器 原价14909元

如何压测阿里云ESSD云盘性能,附源代码

阿里云ESSD云盘性能非常强悍,那么我们该如何对其做压测出他的最强性能呢?下面就让站长给大家演示下。

ESSD压测环境及工具

  • 云服务器:华东1 16核64GB G7,100M按流量付费带宽,系统盘500GB ESSD PL1。
  • 压测盘:2TB ESSD PL3;理论IOPS:10.42W,理论吞吐:1000MB/s。
  • 操作系统::Centos 7.9
  • 压测工具:fio

ESSD压测环境及工具配置

				
					yum install libaio -y
yum install libaio-devel -y
yum install fio -y
				
			

在云服务器上安装fio依赖及fio工具。

ESSD压测脚本

				
					function RunFio
{
 numjobs=$1   # 实例中的测试线程数,例如示例中的10
 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 10 64 4k randwrite /dev/vdb
				
			

上述代码最后一行:RunFio 10 64 4k randwrite /dev/your_device中的10、64、4k、randwrite可根据自己的实际情况进行修改。

  • 10代表实例中的测试线程数
  • 64代表同时发出I/O数的上限
  • 4k代表单次I/O的块文件大小
  • randwrite代表测试时的读写策略

站长这边的压测盘系统内识别为/dev/vdb,所以脚本内部直接写了/dev/vdb。你们需要按照自己的实际情况修改为真实的硬件信息。修改完成后将上述代码保持为110w.sh。

以上脚本来自阿里云文档:https://help.aliyun.com/knowledge_detail/65077.html

开始ESSD压测

				
					 sh 110w.sh
				
			

执行结果可能需要等待一会儿,当出现下图所示时,说明运行好了。

发表评论

Scroll to Top