开发者
资源
Ubuntu22.04 Spec CPU安装及测试-转载
Ubuntu22.04 Spec CPU安装及测试-转载
发表于2024/06/13
3683
 

一、Spec CPU 2017简介 

SPEC是标准性能评估公司(Standard Performance Evaluation Corporation)的简称。SPEC CPU是SPEC组织推出的CPU子系统基准测试程序,最新版本是SPEC CPU 2017。SPEC CPU测试类型包括两种:整型运算和浮点运算,每个类型又分为两个部分:speed单任务速度测试,rate多任务吞吐量测试。 

 

其中speed是针对单任务的计算速度测试,rate针对系统运行多任务的吞吐量进行测试。每种模式有基值(Base)和峰值(Peak)两个性能衡量指标,base测试对编译有严格的规定,比如仅仅允许使用一种编译器、编译优化选项不能超过4个等等;而peak测试中可以针对不同的测试项目使用不同的编译器和不同的优化选项,从而让各项测试的测试结果达到最优。通常来讲,base的测试更严格所以大部分情况下可以只测试base来衡量CPU的性能水平。 

 

SPEC测试推荐使用Linux操作系统,并且对编译器的版本要求较高。glbic不低于2.27、gcc不低于7.3.0,不同版本的gcc对性能的影响也不同,建议安装高版本。本指导使用Ubuntu22.04系统进行SPEC CPU2017的安装和测试。 

 

SPEC CPU 2017是一套CPU子系统测试工具,包括4大种类共43个测试。 

 

4个种类为: SPECrate 2017 Integer SPECrate 2017 Floating Point 

 

对应用例编号为5XX 

 

SPECspeed 2017 Integer SPECspeed 2017 Floating Point 

 

对应用例编号为6XX 

 

Int整型测试 

 

SPECrate@2017Int 

 

SPECspeed@2017Int 

 

编程语言 

 

用例含义 

 

500.perlbench_r 

 

600.perlbench_s 

 

 

PERL 编程语言 

 

502.gcc_r 

 

602.gcc_s 

 

 

GNU C编译器 

 

505.mcf_r 

 

605.mcf_s 

 

 

路线规划 

 

520.omnetpp_r 

 

620.omnetpp_s 

 

C++ 

 

离散事件模拟-计算机网络 

 

523.xalancbmk_r 

 

623.xalancbmk_s 

 

C++ 

 

通过XSLT进行XML到HTML转换 

 

525.x264_r 

 

625.x264_s 

 

 

视频压缩 

 

531.deepsjeng_r 

 

631.deepsjeng_s 

 

C++ 

 

人工智能:-beta树搜索(国际象棋) 

 

541.leela_r 

 

641.leela_s 

 

C++ 

 

人工智能:Monte Carlos树搜索(GO) 

 

548.exchange2_r 

 

648.exchange2_s 

 

Fortran 

 

人工智能:递归式解决方案发生器(数独) 

 

557.xz_r 

 

657.xz_s 

 

 

一般数据压缩 

 

float浮点型测试 

 

SPECrate@2017Floating Point 

 

SPECspeed@2017Floating Point 

 

编程语言 

 

用例含义 

 

503.bwaves_r 

 

603.bwaves_s 

 

C++, C, Fortran 

 

爆炸建模 

 

507.cactuBSSN_r 

 

607.cactuBSSN_s 

 

C++ 

 

物理:相对论 

 

508.namd_r 

 

C++ 

 

分子动力学 

 

510.parest_r 

 

C++ 

 

生物医学成像:有限元素的光学断层扫描 

 

511.povray_r 

 

C++, C 

 

光线跟踪 

 

519.lbm_r 

 

619.lbm_s 

 

 

流体力学 

 

521.wrf_r 

 

621.wrf_s 

 

Fortran, C 

 

天气预报 

 

526.blender_r 

 

C++, C 

 

3D渲染和动画 

 

527.cam4_r 

 

627.cam4_s 

 

Fortran, C 

 

大气建模 

 

628.pop2_s 

 

Fortran, C 

 

大规模海洋建模(气候水平) 

 

538.imagick_r 

 

638.imagick_r 

 

 

图像操作 

 

544.nab_r 

 

644.nab_r 

 

 

分子动力学 

 

549.fotonik3d_r 

 

649.fotonik3d_r 

 

Fortran 

 

计算电磁学 

 

554.roms_r 

 

654.roms_r 

 

Fortran 

 

区域海洋建模 

 

cpu2017目录结构: 

 

1、benchspec -> CPU -> 主要500-999,43个基准 -> 1) src:源码文件 2)build:编译目录 3)run:运 行目录 4)exe:可执行文件目录 5)data:三个数据集目录 

 

2、benchspec -> Makefile.defaults makefile模板文件 

 

3、bin -> runcpu runcpu命令文件 

 

4、bin -> harnes 

 

5、config -> Example-gcc-linux-x86.cfg 模板配置文件,例如:gcc_dir, label, optimize优化参数等 

 

result 存放运行日志 

 

二、安装编译器 

2.1、安装编译器 

本例使用ubuntu22.04,默认gcc版本为9.4,通过手动apt install升级到11.4版本。 

 

# apt install gcc gfortran g++ 

 

确认当前的GCC版本: 

 

#gcc -v 

 

注:Centos系统需要安装以下依赖 

 

yum install gcc gcc-c++ gcc-gfortran libgcc.i686 libstdc++-devel.i686 glibc.i686 glibc-devel.i686 libstdc++.i686 libnsl -y 

 

2.2、挂载SPEC CPU ISO 

将SPCCPU的ISO镜像上传到系统目录/home/siland/,然后挂载到创建好的testiso目录下。 

 

创建testiso目录:#mkdir -p /root/testiso 

 

挂载:#mount -o loop /root/cpu2017-1.1.9.iso /root/testiso/  

 

image.png

 

2.3、安装SPEC2017 

进入目录:#cd /root/testiso 

 

安装:#./install.sh 

 image.png

 

2.4、设置安装目录 

根据提示,输入安装目录(如/home/spc2017)并输入Y确认 

 image.png

 

三、配置gcc-config 

3.1、进入speccpu安装目录下的config目录 

 

#cd /home/spc2017/config 

 

3.2、新建s220.cfg文件,建议拷贝一个模板然后修改。注意,intel选择x86.cfg;如果是armCPU则选择aarch64.cfg。vi 

 

#cp Example-gcc-linux-x86.cfg test.cfg 

 

3.3、打开复制文件,根据情况修改参数 

 

#vim test.cfg 

 

3.4、查询服务器CPU线程数,本例中I9-14900KF是24核(8+16,只有8核可以超线程,线程数8*2+16=32),因此将threads修改为32 

 

threads =32 

 

3.5、将gcc_dir目录修改为/usr 

 

define gcc_dir "/usr" # EDIT (see above) gcc 

 image.png

 

3.6、如果gcc版本为≥10,还需要取消如下注释 

 

image.png

 

如果打算测试后上报官网,还需打开reportable:默认reportable选项为0关闭。测试时如果不打算上传官网,可以带参数--noreportable 

 

 

修改完成后保存退出 

 

四、gcc测试 

摸底测试参照以下指导进行,多次测试后如果开始正式测试,请做好软硬件检查和优化,确保环境最优条件下测试。 

 image.png

4.1、执行命令使得配置生效 

 

#source ../shrc 

 

4.2、设置ulimit 

 

#ulimit -s unlimited 

 

4.3、清理系统缓存 

 

#echo 3 > /proc/sys/vm/drop_caches 

 

4.4、测试模型主要有intrate intspeed fprate fpspeed四种,可以一次性跑,也可以分开跑。 

 

测试1:四种模型都跑(不建议,时间长,出错不易发现) 

 

#runcpu -c /home/spec2017/config/test.cfg intrate intspeed fprate fpspeed --noreportable 

 

测试2:四种模型分开跑,且只跑1次(默认3次) 

 

#runcpu -c /home/spec2017/config/test.cfg intrate -n 1 --noreportable 

 

#runcpu -c /home/spec2017/config/test.cfg intspeed -n 1 --noreportable 

 

#runcpu -c /home/spec2017/config/test.cfg fprate -n 1 --noreportable 

 

#runcpu -c /home/spec2017/config/test.cfg fpspeed -n 1 –noreportable 

 

测试3:只跑单一运算模型如500.perlbench_r编程语言 

 

#runcpu -c /home/spec2017/config/test.cfg 500.perlbench_r --noreportable -n 1 --rate 

 

参数介绍: 

 

--tune :base|peak|all指定测试范围,只测base或peak,默认all全部测试。 

 

--copies:32,线程数。默认为config中设置。 

 

-n :1  测试次数,默认是跑3次,如果想快速出结果可以指定只跑1次。 

 

--noreportable:选择不上报测试结果到官网 

 

备注:测试会产生大量临时测试数据,会占用大量空间,请及时清除 

 

五、结果分析 

        从测试时间来看,4项测试耗时均比较长。测试次数设置为1,测试时间累计约16h。而通常标准的测试要求次数为3(测试次数少于3,SPEC报告会有Invalid Run标识并且errors上报did not have enough runs),因此预计耗时至少48h。 

 

        从测试分数来看,影响测试性能的因素有很多。服务器的硬件如风扇、电源、硬盘、内存和环境温度,BIOS配置、OS下系统优化设置等。要参考多方因素,针对不同的测试大类调整对应的系统设置,才能得到较高的测试数据,因此需要消耗大量的时间反复测试和优化。例如:speed为单任务速度测试,BIOS需要关闭超线程Hyper Threading;而rate为多任务吞吐量测试,需要打开超线程。 

 

 

六、建议硬件配置 

1.风扇: 

 

满配高性能风扇,提高散热性能,降低散热引起的频率波动。环境温度要确保在正常运行范围,确保散热能力。 

 

2.电源: 

 

满配电源,性能测试对功耗要求较高,供电能力直接影响到性能。 

 

3.硬盘: 

 

使用NVMe硬盘,性能测试对数据读写要求较高,读写速度快的硬盘可以有效提高测试性能。 

 

4.CPU: 

 

测试前最好对CPU进行跑分或者压测确保CPU不存在其他问题。建议使用PTU工具进行压测。 

 

5.内存: 

 

选择大厂、颗粒质量好的高性能内存,并且注意插法。1DPC:白槽位满插,2DPC:黑白槽位满插。 

 

七、BIOS调优设置 

BIOS 

 

Default 

 

Speed 

 

Rate 

 

备注 

 

Enable LP[Global](Hyper Threading) 

 

ALL LPs 

 

Single LP 

 

ALL LPs 

 

超线程,speed单任务速度测试需要关闭,rate多任务吞吐测试需要开启 

 

 

Intel Turbo Boost Technology 

 

Enable 

 

Enable 

 

Enable 

 

 

 

Core Prefetchers (Hardware, Adjacent 

 

Cache,DCU Streamer, DCU IP 

 

All Enable 

 

All Enable 

 

All Enable 

 

 

CPU C6 Report 

 

Disable 

 

Disable 

 

Disable 

 

深层省电模式,开启有助于性能 

 

 

Intel VT-d 

 

Disable 

 

Disable 

 

Disable 

 

Intel虚拟化,减少VMM管理IO流量 

 

image.png

 

八、OS系统优化 

8.1、将CPU的运行优先级设置最高 

 

#nice -n -20 runcpu 

 

8.2、将 CPU 运行频率设置为高性能模式: 

 

#cpupower frequency-set -r -g performance 

 

如没有该命令,根据提示自行安装。 

 

8.3、最后执行如下命令: 

 

#sysctl -w vm.dirty_ratio=1 

 

备注:vm.dirty_ratio 可以用脏数据填充的绝对最大系统内存量,当系统到达此点时,必须将所有脏数据提交到磁盘,同时所有新的 I/O 块都会被阻塞,直到脏数据被写入磁盘。 

 

九、报错分析 

关于Error "reportable flag is not set" 

 

解决方案:可以在.config中找到reportable选项并设为1,开启 

 

关于Error"base did not have enough runs" 

 

解Spec cpu决方案:可以利用将all替换为出错基准程序单个跑去查阅报错,大概率是次数没有跑足3次 

 

关Spec cpu于gfortran: error: unrecognized command line option '-fallow-argument-mismatch'; did you mean '-Wno-argument-mismatch'? 

 

image.png

———————————————— 

 

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 

                         

原文链接:https://blog.csdn.net/weixin_53030387/article/details/137270161 

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞