
# 实例计算性能评测方法
#### 操作场景
本节操作介绍使用SPEC CPU®2017基准测试工具评测Linux操作系统实例计算性能的方法。
#### 前提条件
- 已使用云平台提供的公共镜像创建弹性云服务器。
- 请确保每个CPU核至少保留2GB内存空间，安装测试工具的磁盘空间至少10GB。
 
#### 安装前准备
本例以CentOS 7.4操作系统云服务器为例。
1. 远程连接弹性云服务器。
2. 安装依赖包。 **yum install -y m4 numactl\* automake bison bzip2**
   
3. 升级gcc。 **wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/gcc7.zip**
   **unzip gcc7.zip**
   **cd gcc7**
   **bash make_gcc.sh**
   安装时间较长，40分钟左右。默认安装成功后，回显信息如下所示：
   ```
   gcc version 7.3.0 (GCC)
   ```
   
4. 配置环境变量。
   1. 执行以下命令配置环境变量。 **vim /etc/profile**
      
   
   2. 添加如下信息。
      ```
      export PATH=/usr/local/gcc/bin:$PATH
      export LD_LIBRARY_PATH=/usr/local/gcc/lib64:/usr/local/gmp/lib:/usr/local/mpfr/lib:/usr/local/mpc/lib:$LD_LIBRARY_PATH
      export MANPATH=/usr/local/gcc/share/man:$MANPATH
      ```
      
   
   3. 执行如下语句，使环境变量生效。 **source /etc/profile**
      
   
   4. 查询gcc版本。 **gcc -v**
      ```
      gcc version 7.3.0 (GCC)
      ```
      
    
5. 升级glibc。 本例中安装的是glibc 2.27版本。glibc 2.27版本需要在gcc 7.3.0环境下安装，否则configure会报错提示gcc版本过低。
   1. 将安装文件上传到/home路径下面，然后参照如下命令进行安装， **cd /home**
      **tar -zxvf glibc-2.27.tar.gz**
      **cd glibc-2.27**
      **mkdir build**
      **cd build**
      **export LD_LIBRARY_PATH=/usr/local/mpc-1.0.3/lib:/usr/local/gmp-6.1.0/lib:/usr/local/mpfr-3.1.4/lib:/usr/local/gcc-7.3.0/lib:/usr/local/isl-0.18/lib:/**
      **../configure --prefix=/usr/local/glibc-2.27 --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-sanity-checks --disable-werror**
      **make -j 40**
      **make -j 40 install**
      
   
   2. 执行以下命令配置环境变量。 **vim /etc/profile**
      
   
   3. 添加如下信息。
      ```
      export PATH=/usr/local/glibc-2.27/bin:$PATH
      ```
      
   
   4. 执行如下语句，使环境变量生效。 **source /etc/profile**
      
   
   5. 查询glibc版本。 ldd --version
      ```
      ldd (GNU libc) 2.27
      ```
      
    
 
#### 下载测试工具
单击[SPEC官网](https://www.spec.org/cpu2017/?)下载SPEC CPU®2017测试工具。
本例中使用的版本为1.0.5，推荐您使用1.0.5或更高版本的SPEC CPU 2017。
#### 安装测试工具
本例介绍安装SPEC CPU®2017的操作步骤。
1. 将下载好的SPEC CPU®2017安装包上传至ECS弹性云服务器指定目录下。 本例中，SPEC CPU®2017工具的安装目录为./spec2017
   
2. 解压speccpu2017_config.zip配置文件到SPEC CPU 2017工具到指定目录。 本例中解压至cpu2017/config/
   **unzip speccpu2017_config.zip -d spec2017/config/**
   
3. 进入SPEC CPU 2017工具的挂载目录并安装。 **cd ./spec2017**
   **./install.sh**
   如果实例提示确认安装路径是否正确，输入**yes**。
   回显信息如下所示说明安装完成。
   ```
   Installation successful.
   ```
   
 
#### 测试SPEC CPU 2017
1. 设置环境变量。
   - gcc、glibc版本检查 执行**gcc -v** 和**ldd --version**检查当前的版本信息。
     gcc版本需不低于7.3.0，glibc版本不低于2.27。
     
   
   
   
   - 使用**source shrc**命令在/spec2017目录下关联SPEC CPU®2017测试运行时所需要的环境变量和相关库文件。
    
2. 修改配置文件。 执行以下命令，下载测试时需要的cfg配置文件并拷贝至SPEC cpu安装文件夹的config目录下：
   **wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/speccpu2017_config.zip**
   **unzip speccpu2017_config.zip -d /spec2017/config/**
   
3. 执行以下命令，进行多CPU的RateInt测试。 **./bin/runcpu --config=spec17-opti-gcc7.3.cfg --copies=\`cat /proc/cpuinfo \| grep process \| wc -l\` --loose intrate**
   
4. 执行以下命令，删除测试过程中的文件，避免多次测试后硬盘容量不足。 **rm -fr benchspec/CPU/\*/run/\***
   默认运行一次intrate测试，benchspec目录容量会增加3\~4G左右，所以默认运行一次要清理一下。
   
5. 以上测试步骤只测试Rate或Speed的base一次，数据不可发布。
   - 如果要进行多次测试，要带上-n参数。 **./bin/runcpu --config=spec17-opti-gcc7.3.cfg --copies=\`cat /proc/cpuinfo \| grep process \| wc -l\` --loose intrate -n 20**
     
   
   - 如果只想测试某个单项，可参照如下命令进行测试。 例如只测试502.gcc_r子项，执行命令如下。
     **./bin/runcpu --config=spec17-opti-gcc7.3.cfg 502.gcc_r**
     
   
   
   表1SPEC CPU®2017测试项 
   | Rate int        | Rate FP         | Speed int       | Speed FP        |
   |:---|:---|:---|:---|
   | 500.perlben_r   | 503.bwaves_r    | 600.perlbench_s | 603.bwaves_s    |
   | 502.gcc_r       | 507.cactuBSSN_r | 602.gcc_s       | 607.cactuBSSN_s |
   | 505.mcf_r       | 508.namd_r      | 605.mcf_s       | 619.lbm_s       |
   | 520.omnetpp_r   | 510.parest_r    | 620.omnetpp_s   | 621.wrf_s       |
   | 523.xalancbmk_r | 511.povray_r    | 623.xalancbmk_s | 627.cam4_s      |
   | 525.x264_r      | 519.lbm_r       | 625.x264_s      | 628.pop2_s      |
   | 531.deepsjeng_r | 521.wrf_r       | 631.deepsjeng_s | 638.imagick_s   |
   | 541.leela_r     | 526.blender_r   | 641.leela_s     | 644.nab_s       |
   | 548.exchange2_r | 527.cam4_r      | 648.exchange2_s | 649.fotonik3d_s |
   | 557.xz_r        | 538.imagick_r   | 657.xz_s        | 654.roms_s      |
   | -               | 544.nab_r       | -               | -               |
   | -               | 549.fotonik3d_r | -               | -               |
   | -               | 554.roms_r      | -               | -               |
      
   
 
#### 查看性能分数
- 测试完成后，可进入/spec2017/result/路径下查看已完成的测试结果文件 **CPU2017.xxx.intrate.refrate.txt、CPU2017.xxx.fprate.refrate.txt、CPU2017.xxx.intspeed.refspeed.txt、CPU2017.xxx.fpspeed.refspeed.txt**
  
- 测试过程中，如果想提前知道已经完成的测试子项分数，可使用如下命令进行查看，ratio即为得。 **less CPU2017.XXX.log.debug \| grep Success**
  
 
