
# 云服务器计算性能测试指导
#### 操作场景
本文介绍如何测试云服务器的如下性能指标，用于评估云服务器的计算性能：
- [测试CPU性能]：通过测试云服务器的加密、图片压缩/解压缩、文本压缩/解压缩等计算综合能力进行评估。
- [测试内存带宽性能]：通过Copy 、Scale、 Add、 Triad等四种内存操作进行评估。
- [测试CPU时延]：通过内核的延迟判断内核的实时性。
- [测试内存时延]：通过英特尔发布的测试用具，测试访问内存的时延。
- [测试计算综合性能]：通过类Unix系统下的开源性能测试工具UnixBench，测试系统调用、内存读写、进程、管道、运算等性能指标。
 
#### 前提条件
- 云服务器运行状态正常。
- 云服务器已绑定弹性公网IP。
- 云服务器内部已安装必备工具，如果没有安装请执行以下命令进行安装：
  - 测试CPU性能，需安装wget、tar工具：
    HCE OS或CentOS操作系统：
    ```
    sudo yum install -y wget tar
    ```
    Ubuntu操作系统：
    ```
    sudo apt update
    sudo apt install wget
    sudo apt install tar
    ```
    
  
  - 测试内存带宽性能，需安装wget、gcc工具： HCE OS或CentOS操作系统：
    ```
    sudo yum install -y wget gcc
    ```
    Ubuntu操作系统：
    ```
    sudo apt update
    sudo apt install wget
    sudo apt install gcc
    ```
    
  
  - 测试CPU时延，需安装git工具及依赖库numactl-devel： HCE OS或CentOS操作系统：
    ```
    sudo yum install -y git numactl-devel
    ```
    Ubuntu操作系统：
    ```
    sudo apt update
    sudo apt install git libnuma-dev numactl
    ```
    
  
  - 测试内存时延，需安装wget工具： HCE OS或CentOS操作系统：
    ```
    sudo yum install -y wget
    ```
    Ubuntu操作系统：
    ```
    sudo apt update
    sudo apt install wget
    ```
    
  
  - 测试计算综合性能，需安装git工具： HCE OS或CentOS操作系统：
    ```
    sudo yum install -y git
    ```
    Ubuntu操作系统：
    ```
    sudo apt update
    sudo apt install git
    ```
    
   
 
 #### 测试CPU性能
1. 安装测试工具Geekbench。 
   测试CPU性能，需要使用Geekbench工具，下面按不同版本进行介绍。
   - Geekbench 3.4.2
     1. 远程登录云服务器实例。 详细操作，请参见[Linux BMS登录方式概述](https://support.huaweicloud.com/usermanual-bms/bms_umn_0011.html)。
        
     
     2. 执行以下命令，下载工具安装包。
        ```
        wget http://cdn.primatelabs.com/Geekbench-3.4.2-Linux.tar.gz
        ```
        
     
     3. 执行以下命令，解压工具安装包。
        ```
        tar -zxvf Geekbench-3.4.2-Linux.tar.gz
        ```
        
     
     4. 执行以下命令，进入工具所在目录。
        ```
        cd ./dist/Geekbench-3.4.2-Linux
        ```
        
      
   
   - Geekbench 5.5.1
     1. 远程登录云服务器实例。 详细操作，请参见[Linux BMS登录方式概述](https://support.huaweicloud.com/usermanual-bms/bms_umn_0011.html)。
        
     
     2. 执行以下命令，下载工具安装包。
        ```
        wget https://cdn.geekbench.com/Geekbench-5.5.1-Linux.tar.gz
        ```
        
     
     3. 执行以下命令，解压工具安装包。
        ```
        tar -zxvf Geekbench-5.5.1-Linux.tar.gz
        ```
        
     
     4. 执行以下命令，进入工具所在目录。
        ```
        cd ./ Geekbench-5.5.1-Linux
        ```
        
      
   
   
   
   
2. 在云服务器上，执行以下命令，测试CPU性能。 
   ```
   ./geekbench_x86_64
   ```
   重复执行5次命令，保留5次的详细测试数据，最终取5次测试的平均值作为测试结果。
   如果测试正常完成，过程中未报错且软件不退出，表示测试结果符合预期。
   
   
3. 查看CPU性能测试结果。 
   在命令输出结果中，关注Integer Score、Floating Point Score取值，用于评估云服务器的CPU性能。
   ```
   Benchmark Summary
    Integer Score                3247  24554
    Floating Point Score         3312  25383
   ```
   其中，第一列表示测试项，第二列数值表示单核结果，第三列数值表示多核结果。您可以根据输出结果，记录CPU性能测试的结果。
   示例以CentOS 7.4操作系统为例介绍：
   表1CPU性能测试的结果记录 
   |            云服务器操作系统            | CentOS 7.4 |
   |---|---|
   | **Flavor**                     | xlarge     |
   | **规格**                         | 4U16G      |
   | **单核整形（Integer Score）**        | 3247       |
   | **单核浮点（Floating Point Score）** | 3312       |
   | **多核整形（Integer Score）**        | 24554      |
   | **多核浮点（Floating Point Score）** | 25383      |
      
   
   
 
 #### 测试内存带宽性能
1. 安装和编译测试工具stream.c v 5.10。 
   测试内存带宽性能，需要使用stream.c工具。
   1. 远程登录云服务器实例。 详细操作，请参见[Linux BMS登录方式概述](https://support.huaweicloud.com/usermanual-bms/bms_umn_0011.html)。
      
   
   2. 执行以下命令，下载工具安装包。
      ```
      git clone https://github.com/jeffhammond/STREAM
      ```
      或者
      ```
      wget https://raw.githubusercontent.com/jeffhammond/STREAM/master/stream.c
      ```
      
   
   3. 执行以下命令，编译工具。
      ```
      cd STREAM
      gcc -O3 -fopenmp -DSTREAM_ARRAY_SIZE=64000000 -DNTIMES=10 stream.c -o stream
      ```
      
   
   
   
   
2. 在云服务器上，执行以下命令，测试内存带宽性能。 
   ```
   ./stream
   ```
   重复执行5次命令，保留5次的详细测试数据，最终取5次测试的平均值作为测试结果。
   如果测试正常完成，过程中未报错且软件不退出，表示测试结果符合预期。
   
   
3. 查看内存带宽性能测试结果。 
   在命令输出结果中，关注Copy、Scale、Add和Triad取值，用于评估云服务器的内存带宽性能。
   ```
   Function    Best Rate MB/s
   Copy:           73386.5  
   Scale:          72485.5  
   Add:            81241.2  
   Triad:          81385.7
   ```
   其中，第一列表示测试项，第二列数值表示测试项对应的内存带宽数据。您可以根据输出结果，记录内存带宽性能测试的结果。
   示例以CentOS 7.2操作系统为例介绍：
   表2内存带宽性能测试的结果记录 
   |   云服务器操作系统   | CentOS 7.2 |
   |---|---|
   | **Flavor**   | xlarge     |
   | **规格**       | 4U16G      |
   | **Copy 带宽**  | 73386.5    |
   | **Scale 带宽** | 72485.5    |
   | **Add 带宽**   | 81241.2    |
   | **Trail 带宽** | 81385.7    |
      
   
   
 
 #### 测试CPU时延
1. 安装和编译测试工具Rt-tests 1.0。 
   测试CPU时延，需要使用Rt-tests工具。
   1. 远程登录云服务器实例。 详细操作，请参见[Linux BMS登录方式概述](https://support.huaweicloud.com/usermanual-bms/bms_umn_0011.html)。
      
   
   2. 执行以下命令，下载工具安装包。
      ```
      git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
      ```
      
   
   3. 执行以下命令，切换至对应版本。
      ```
      cd rt-tests
      git checkout -b stable/v1.0 origin/stable/v1.0
      ```
      
   
   4. 执行以下命令，安装并编译工具。
      ```
      make all
      make install
      ```
      
   
   
   
   
2. 在云服务器上，执行以下命令，测试CPU时延。 
   ```
   ./cyclictest -D 20s -q
   ```
   重复执行5次命令，保留5次的详细测试数据，最终取5次测试的平均值作为测试结果。
   如果测试正常完成，过程中未报错且软件不退出，表示测试结果符合预期。
   
   
3. 查看CPU时延测试结果。 
   在命令输出结果中，关注时延的Avg取值，单位为us，用于评估云服务器的CPU时延。
   ```
   # cyclictest -D 20s -q
   # /dev/cpu_dma_latency set to 0us
   T: 0 (12323) P: 0 I:1000 C:  20000 Min:  3 Act:  8 Avg:  5 Max:  31
   ```
   其中，第一列表示测试项，第二列表示测试数值。您可以根据输出结果，记录CPU时延的结果。
   示例以CentOS 7.2操作系统为例介绍：
   表3CPU时延测试的结果记录 
   |    云服务器操作系统    | CentOS 7.2 |
   |---|---|
   | **Flavor**     | xlarge     |
   | **规格**         | 4U16G      |
   | **CPU时延（Avg）** | 5 us       |
      
   
   
 
 #### 测试内存时延
1. 安装和编译测试工具mlc 3.11a。 
   测试内存时延，需要使用mlc 3.11a工具。
   1. 远程登录云服务器实例。 详细操作，请参见[Linux BMS登录方式概述](https://support.huaweicloud.com/usermanual-bms/bms_umn_0011.html)。
      
   
   2. 下载工具安装包。
      ```
      wget --no-check-certificate --no-cookies --header "Cookie: SSESS496a9a7de0a1eb537f6db5d919ea81a0=bva-AD4ri_7N1RdOVT7gGeAx8UOvop6uFx_-XBD5H4M;" https://downloadmirror.intel.com/866182/mlc_v3.12.tgz
      ```
      
   
   3. 解压并进入对应的测试目录。
      ```
      tar -zxvf mlc_v3.12.tgz
      cd Linux
      ```
      
   
   
   
   
2. 在云服务器上，执行以下命令，测试内存时延。 
   ```
   ./mlc --latency_matrix -e -r
   ```
   重复执行5次命令，保留5次的详细测试数据，最终取5次测试的平均值作为测试结果。
   如果测试正常完成，过程中未报错且软件不退出，表示测试结果符合预期。
   如果报错提示"echo xxxx"，请在当前系统执行以下命令后继续测试。
   ```
   echo xxxx
   ```
   其中，请使用具体报错信息替换命令中的"xxxx"。
   
   
3. 查看内存时延测试结果。 
   在命令输出结果中，关注CPU访问同NUMA的内存时延和跨NUMA的内存时延，用于评估云服务器的内存时延。
   ```
   Numa node
   Numa node          0         1   
              0         72.4    124.6  
              1         124.6    72.4
   ```
   其中，取第一行的数值即可，该数值表示node0的CPU访问node0和node1的内存时延。您可以根据输出结果，记录内存时延的结果。
   示例以CentOS 7.2操作系统为例介绍：
   表4内存时延测试的结果记录 
   |    云服务器操作系统    | CentOS 7.2 |
   |---|---|
   | **Flavor**     | xlarge     |
   | **规格**         | 4U16G      |
   | **同numa内存时延**  | 72.4       |
   | **跨numa 内存带宽** | 124.8      |
      
   
   
 
 #### 测试计算综合性能
1. 安装和编译测试工具UnixBench。 
   测试计算综合性能，需要使用UnixBench工具。
   1. 远程登录云服务器实例。 详细操作，请参见[Linux BMS登录方式概述](https://support.huaweicloud.com/usermanual-bms/bms_umn_0011.html)。
      
   
   2. 执行以下命令，下载工具安装包。
      ```
      yum install -y git
      git clone https://github.com/kdlucas/byte-unixbench.git
      ```
      
   
   3. 执行以下命令，修改多核运行限制。
      ```
      cd byte-unixbench/UnixBench
      sed -i 's/0 }/128 }/g' Run
      ```
      将文件中两处maxCopies =\> 0改为maxCopies =\> 128。
      
   
   
   
   
2. 在云服务器上，执行以下命令，测试计算综合性能。 
   ```
   ./Run
   ```
   由于Unixbench本身采用了多次测试，该软件仅测试1次，取测试结果。
   如果测试正常完成，过程中未报错且软件不退出，表示测试结果符合预期。
   
   
3. 查看计算综合性能测试结果。 
   在命令输出结果中，会先后打印单核和多核的测试结果，分别获取单核和多核的综合计算得分（System Benchmarks Index Score），用于评估云服务器的计算综合性能。
   ```
   System Call Overhead                          15000.0    2523897.7   1682.6
                                                                      ========
   System Benchmarks Index Score                                        1499.9
   ------------------------------------------------------------------------
   ...
   System Call Overhead                          15000.0    5875941.4   3917.3
                                                                      ========
   System Benchmarks Index Score                                        3802.1
   ```
   示例以CentOS 7.2操作系统为例介绍：
   表5计算综合性能测试的结果记录 
   |  云服务器操作系统  | CentOS 7.2 |
   |---|---|
   | **Flavor** | xlarge     |
   | **规格**     | 4U16G      |
   | **单核综合得分** | 1499.9     |
   | **多核综合得分** | 3802.1     |
      
   
   
 
#### 测试CPU时延时下载rt-test工具遇到的问题
**问题1：**出现"fatal: Unable to look up git.kernel.org (port 9418) (Name or service not known)"报错。
可能原因：云服务器连接不上git.kernel.org，可能是网络配置拦截了Git的端口9418。
解决办法：
将下载命令中的git替换成https。
```
git clone https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
```
**问题2：**提示编译报错。
问题原因：没有安装numa依赖包。
解决办法：
执行如下命令，安装依赖包。
- HCE OS或CentOS操作系统：
  ```
  yum install -y numactl-devel
  ```
  
- Ubuntu操作系统：
  ```
  apt install -y libnuma-dev
  ```
  
 
#### 测试计算综合性能时下载Unixbench工具遇到的问题
**问题1：**出现"fatal: unable to access 'https://github.com/kdlucas/byte-unixbench.git/': Peer's Certificate issuer is not recognized."报错。
问题原因：该报错表示SSL证书错误，是系统证书的问题，系统判断到这个行为会造成不良影响，所以进行了阻止，需要设置跳过SSL证书验证。
解决办法：
执行以下命令，跳过SSL证书验证。
```
git config --global http.sslVerify false
```
**问题2：**缺少"Time::HiRes module"。
图1报错信息   
![](https://support.huaweicloud.com/bestpractice-bms/zh-cn_image_0000002668617496.png "点击放大")
解决办法：
执行以下命令，安装对应模块。
```
yum install -y perl-Time-HiRes
```
