阿里云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
执行结果可能需要等待一会儿,当出现下图所示时,说明运行好了。