最近更新时间:2023.04.28 12:02:27
首次发布时间:2022.03.17 18:01:50
为满足业务健康运行的需要,需对承载业务运行的云服务器进行全方位的性能测试,测试宜遵循以下原则:
客观:应标定云服务器的规格(包括但不限于 CPU 核数、CPU 主频、内存、存储、网络带宽、操作系统等)和测试方法(包括但不限于部署方案、实例数量、业务压力等),确保测试结果的公平以及客观。
合理:应符合业务实际需求和具体运行场景。
准确:应选择成熟、稳定、权威的测试工具和测试用例,确保最终结果可以准确的反映出云服务器的性能。
分类 | 测试工具 | 测试指标 |
---|---|---|
CPU | UnixBench | 单核跑分 |
多核跑分 | ||
SuperPI | 计算时长 | |
内存 | Stream | 带宽 |
MLC | 时延 | |
网络 | iPerfs | bps、pps |
Pktgen | ||
Netperf | ||
云盘 | FIO | IOPS |
IO延迟 | ||
dd | 带宽 |
说明
本文给出的测试环境和方法仅供参考,不代表实例的真实最优性能。
云服务器操作系统:本文以 CentOS 8.3 为例。
UnixBench 是一款开源的测试 UNIX 系统基本性能的工具,是比较通用的测试云服务器性能的工具。UnixBench 会执行一系列的测试,测试系统各个方面的性能,然后将每个测试结果和一个基准值进行比较,得到一个索引值,所有测试项目的索引值结合在一起形成一个测试分数值。
执行以下命令,下载并安装 UnixBench。
wget https://github.com/kdlucas/byte-unixbench/archive/v5.1.3.tar.gz tar -zxvf v5.1.3.tar.gz cd byte-unixbench-5.1.3/UnixBench make
执行以下命令,进行单核测试。./Run -c 1
执行该命令后请耐心等待,过程可能比较漫长,最后结果分数将会展现在屏幕上。结果参考 Index 数值,数值越高代表性能越好。
执行以下命令,进行多核测试。
# 获取 CPU 的线程数 core cat /proc/cpuinfo| grep "processor"| wc -l ./Run -c {core}
执行该命令后请耐心等待,过程可能比较漫长,最后结果分数将会展现在屏幕上。结果参考 Index 数值,数值越高代表性能越好。
SuperPI 是一个计算圆周率的计算机程序,最大精确到小数点后的3200万位数,是一种快速参考基准测试,常用于超频或比较不同的 CPU 和硬件配置。
执行以下命令,安装 SuperPI 工具并测试。
git clone https://github.com/Fibonacci43/SuperPI.git cd ./SuperPI gcc -O -funroll-loops -fomit-frame-pointer pi_fftcs.c fftsg_h.c -lm -o pi_css5 # 通过计算精度为 1<<22=4194304 的 π 的值,测试 CPU 的计算能力 ./pi_css5 $((1<<22))
若提示没有安装 Git,可执行如下命令安装。
# CentOS下使用 yum install git -y # Ubuntu/Debian下使用 apt-get install git -y
执行上述命令后,计算用时回显如下图所示,数值越小,表明时间越短,说明计算能力越强。
Stream 是业界公认的综合性内存性能测量工具之一。Sream 支持 Copy、Scale、Add、Triad 四种操作。
更多内容请前往 Stream 官网地址 和 Stream 使用说明 获取。
执行以下命令,下载并安装 Stream。
wget https://www.cs.virginia.edu/stream/FTP/Code/stream.c yum -y install gcc
编写测试脚本。
gcc -O -fopenmp -mcmodel=medium -DSTREAM_ARRAY_SIZE=200000000 -DNTIMES=100 stream.c -o stream_omp_exe
参数说明:
参数 | 说明 |
---|---|
STREAM_ARRAY_SIZE | 指定测试使用的数组大小。 默认为 10000000。Stream 将创建 3 个 STREAM_ARRAY_SIZE 大小的数组,数组元素类型默认为 double。上述参考脚本中使用的内存为 3 × STREAM_ARRAY_SIZE × sizeof(double)=4.5GiB,也可根据实际需求进行修改。 |
NTIMES | 指定测试用例的运行次数,最终结果取最好的一次。 值默认为 10,通常不需要修改。 |
执行以下命令,进行带宽测试。
# 同 numa 内存带宽 numactl -N 0 -m 0 ./stream_omp_exe # 跨 numa 内存带宽 numactl -N 1 -m 0 ./stream_omp_exe
参数说明:
参数 | 说明 |
---|---|
numactl | 控制进程和内存分配的 NUMA 策略。 例如, -N 0 -m 0 表示使用 NUMA0 的 CPU和 NUMA0 的内存,-N 1 -m 0 表示使用 NUMA1 的 CPU 和 NUMA0 的内存。 |
执行该命令后,最后结果分数显示如下图回显所示。结果参考 Best Rate 数值,数值越高代表性能越好。
MLC(Memory Latency Checker)为 Intel 的内存测试工具,可以有效方便地测试内存延时和带宽。该工具也提供了一些选项用于从特定处理器核心到缓存或内存的一系列细粒度测试。
执行以下命令,下载并安装 MLC。
wget https://software.intel.com/content/dam/develop/external/us/en/protected/mlc_v3.9.tgz yum install glibc -y tar -xzvf mlc_v3.9.tgz
执行以下命令,进行延时测试。
cd ./Linux/ ./mlc --latency_matrix -e -r
参数说明:
参数 | 说明 |
---|---|
--latency_matrix | 打印同 NUMA 和跨 NUMA 内存延迟矩阵 |
-e | 输出不修改预取器设置的测试结果 |
-r | 输出随机访问得到的延迟结果 |
执行该命令后,本地和跨插槽内存延迟的矩阵会打印在屏幕上,数值越低,代表延迟越低。
请参见使用iPerf3测试网络性能、使用Pktgen测试网络性能、使用Netperf测试网络性能。
请参见测试存储性能。