You need to enable JavaScript to run this app.
导航

云服务器性能基准测试

最近更新时间2024.03.21 19:44:19

首次发布时间2022.03.17 18:01:50

本文介绍如何使用性能测试工具进行云服务器的CPU、内存、网络、云盘等的性能测试,您可根据测试获取的数据判断云服务器的性能。

测试原则

为满足业务健康运行的需要,需对承载业务运行的云服务器进行全方位的性能测试,测试宜遵循以下原则:

  • 客观:应标定云服务器的规格(包括但不限于CPU核数、CPU主频、内存、存储、网络带宽、操作系统等)和测试方法(包括但不限于部署方案、实例数量、业务压力等),确保测试结果的公平以及客观。

  • 合理:应符合业务实际需求和具体运行场景。

  • 准确:应选择成熟、稳定、权威的测试工具和测试用例,确保最终结果可以准确的反映出云服务器的性能。

测试工具及主要指标

分类测试工具测试指标相关文档
CPUUnixBench单核跑分UnixBench测试CPU单核/多核性能
多核跑分
SuperPI计算时长SuperPI测试计算时长
Sysbench平均每秒完成的event数(events per second)Sysbench测试CPU负载
内存Stream带宽Stream测试带宽
MLC时延MLC测试时延
Sysbench带宽Sysbench测试Memory负载
网络iPerfsbps、pps使用iPerf3测试网络性能
Pktgen使用Pktgen测试网络性能
Netperf使用Netperf测试网络性能
云盘FIOIO延迟使用FIO测试IO延迟性能
IOPS使用FIO测试IOPS性能
dd带宽使用dd命令测试带宽
SysbenchIOPS、带宽使用Sysbench测试FileIO负载

测试环境

准备工作

环境准备

说明

本文给出的测试环境和方法仅供参考,不代表实例的真实最优性能。

软件版本

云服务器操作系统:本文以 CentOS 8.3 为例。

CPU性能测试

UnixBench测试CPU单核/多核性能

测试说明

UnixBench是一款开源的测试UNIX系统基本性能的工具,是比较通用的测试云服务器性能的工具。UnixBench会执行一系列的测试,测试系统各个方面的性能,然后将每个测试结果和一个基准值进行比较,得到一个索引值,所有测试项目的索引值结合在一起形成一个测试分数值。

测试步骤

  1. 登录待测试云服务器

  2. 执行以下命令,下载并安装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
    
  3. 执行以下命令,进行单核测试。
    ./Run -c 1

    执行该命令后请耐心等待,过程可能比较漫长,最后结果分数将会展现在屏幕上。结果参考Index数值,数值越高代表性能越好。
    image.png

  4. 执行以下命令,进行多核测试。

    # 获取CPU的线程数core
    cat /proc/cpuinfo| grep "processor"| wc -l
    ./Run -c {core}
    

    执行该命令后请耐心等待,过程可能比较漫长,最后结果分数将会展现在屏幕上。结果参考Index数值,数值越高代表性能越好。
    image.png

SuperPI测试计算时长

测试说明

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

执行上述命令后,计算用时回显如下图所示,数值越小,表明时间越短,说明计算能力越强。
image.png

Sysbench测试CPU负载

请参见使用Sysbench测试CPU负载

内存性能测试

Stream测试带宽

测试说明

Stream是业界公认的综合性内存性能测量工具之一。Sream支持Copy、Scale、Add、Triad四种操作。

更多内容请前往Stream 官网地址Stream 使用说明获取。

测试步骤

  1. 执行以下命令,下载并安装Stream。

    wget https://www.cs.virginia.edu/stream/FTP/Code/stream.c
    yum -y install gcc
    
  2. 编写测试脚本。

    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,通常不需要修改。
  3. 执行以下命令,进行带宽测试。

    # 同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数值,数值越高代表性能越好。
    image.png

MLC测试时延

测试说明

MLC(Memory Latency Checker)为Intel的内存测试工具,可以有效方便地测试内存延时和带宽。该工具也提供了一些选项用于从特定处理器核心到缓存或内存的一系列细粒度测试。

测试步骤

  1. 执行以下命令,下载并安装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
    
  2. 执行以下命令,进行延时测试。

    cd ./Linux/
    ./mlc --latency_matrix -e -r
    

    参数说明:

    参数
    说明
    --latency_matrix打印同NUMA和跨NUMA内存延迟矩阵
    -e输出不修改预取器设置的测试结果
    -r输出随机访问得到的延迟结果

    执行该命令后,本地和跨插槽内存延迟的矩阵会打印在屏幕上,数值越低,代表延迟越低。
    image.png

Sysbench测试Memory负载

请参见使用Sysbench测试Memory负载

网络性能测试

请参见以下文档:

云盘性能测试

请参见以下文档: