Ubuntu22.04 Spec CPU安装及测试
C1rcle3 2024-07-16 08:37:02 阅读 64
一、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
| C
| PERL 编程语言
|
502.gcc_r
| 602.gcc_s
| C
| GNU C编译器
|
505.mcf_r
| 605.mcf_s
| C
| 路线规划
|
520.omnetpp_r
| 620.omnetpp_s
| C++
| 离散事件模拟-计算机网络
|
523.xalancbmk_r
| 623.xalancbmk_s
| C++
| 通过XSLT进行XML到HTML转换
|
525.x264_r
| 625.x264_s
| C
| 视频压缩
|
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
| C
| 一般数据压缩
|
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
| C
| 流体力学
|
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
| C
| 图像操作
|
544.nab_r
| 644.nab_r
| C
| 分子动力学
|
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/
2.3、安装SPEC2017
进入目录:#cd /root/testiso
安装:#./install.sh
2.4、设置安装目录
根据提示,输入安装目录(如/home/spc2017)并输入Y确认
三、配置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
3.6、如果gcc版本为≥10,还需要取消如下注释
如果打算测试后上报官网,还需打开reportable:默认reportable选项为0关闭。测试时如果不打算上传官网,可以带参数--noreportable
修改完成后保存退出
四、gcc测试
摸底测试参照以下指导进行,多次测试后如果开始正式测试,请做好软硬件检查和优化,确保环境最优条件下测试。
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流量
|
八、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'?
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。