使用Sysbench测试EC2云主机CPU的性能

一、Sysbench工具简介

测试云主机的CPU性能可使用常见的sysbench工具进行压力测试。Sysbench的CPU测试主要考察CPU的整数运算能力,通过计算一定范围内的素数,来评估CPU的计算能力。整数计算的场景适合对应到企业应用环境,不含视频转码、图像渲染等领域需要的浮点预算能力。此外,本测试也不使用复杂的benchmark套件测试内存、网络、磁盘等,只是测试CPU。Sysbench测试工具为软件包源直接安装,预先build好,不做build过程的调参数。

Sysbench压CPU的方式是算素数,又叫分解质因数。先设定一个范围,例如1~10000,程序开始逐个计算确认是不是质数,然后从1到10000都算完毕了,这是一个event。然后,重复继续跑第二次,每算完一次1~10000的区间就叫一个event。性能对比是看指定时间内,谁跑的event多,谁的性能高。或者反之,限制event次数,谁先跑完谁更快。

二、脚本安装

Sysbench的安装源来自github:

https://github.com/akopytov/sysbench

本文在AWS云上创建的操作系统为Amazon Linux 2,使用如下命令安装。

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
yum -y install sysbench
yum update -y

在其他云上如果进行对比,可选择CentOS 7.9版本,否则可能会遇到系统不兼容。另外软件包的下载服务器是在海外,可能会遇到网络连接失败,多尝试几次即可。

三、测试机型选择:

机型的选择上,分别选择:

  • m4.2xlarge, 8vCPU/32GB,采用Intel® Xeon® CPU E5-2686 v4 @ 2.30GHz的处理器,4个核心默认开启超线程总计8vCPU;
  • m5.2xlarge, 8vCPU/32GB,采用Intel® Xeon® Platinum 8259CL CPU @ 2.50GHz的处理器,4个核心默认开启超线程总计8vCPU;
  • m6i.2xlarge,8vCPU/32GB,采用Intel® Xeon® Platinum 8375C CPU @ 2.90GHz的处理器,4个核心默认开启超线程总计8vCPU;
  • m6g.2xlarge, 8vCPU/32GB,采用AWS Graviton2处理器的ARM架构,8个核心不提供超线程。

由于截止本文测试时候(2022年9月),AWS中国区域尚未发布m6i机型,因此本测试在新加坡进行。

四、参数说明

本次测试用的是限制相同的时间(60秒),谁跑的event多就证明谁的性能高。测试脚本如下:

sysbench cpu --cpu-max-prime=100000 --time=60 --threads=8 run

解释如下:

  • cpu-max-prime=100000 是指定素数的范围,如果不指定默认数值是10000,这里改到100000
  • time=60 是程序跑满60秒,谁算的event多,谁的性能好。如果不指定,默认是10秒。由于十秒太短了,本文的测试改到1分钟
  • threads=8 是线程数,设置为与实际的vCPU数量相同,测试2xlarge机型时候vCPU是8个,因此这里threads=8,但测试4xlarge机型时候vCPU是16,这里配置为16

接下来分别对不同机型进行测试。

记录测试结果,即可进行性能参数的对比。