[转帖]CPU计算性能speccpu2006的测试方法及工具下载
https://www.yii666.com/blog/335517.html
CPU计算性能speccpu2006的测试方法及工具下载
- 简介
- 测试原理
- 目录结构
- 测试方法
- 基准测试项解析
- 测试结果
- 常见问题FAQ
简介
SPEC CPU2006是SPEC组织推出的CPU子系统评估软件,重点测试系统的处理器、内存子系统和编译器。
SPEC CPU2006包括了CINT2006和CFP2006两个子项目,前者用于测量和对比整数性能、包含12个不同的基准测试,而后者则用于测量和对比浮点性能、包含17个不同的基准测试。文章来源地址https://www.yii666.com/blog/335517.html
SPEC CPU2006测试中,测试系统的处理器、内存子系统和使用到的编译器(SPEC CPU2006提供的是源代码,并且允许测试用户进行一定的编译优化)都会影响最终的测试性能,而I/O(磁盘)、网络、操作系统和图形子系统对于SPEC CPU2006的影响非常的小。文章来源站点https://www.yii666.com/
speccpu2006-v1.0.1百度网盘下载地址:
链接:https://pan.baidu.com/s/1R-RCA3ZKSnpbyXgqEl7bSw?pwd=a3h8
提取码:a3h8
测试原理
Spec2006测试模式分为rate测试和speed测试两项,其中rate测试主要衡量系统的多并发运算处理性能即平常我们所说的多线,speed测试主要衡量系统的单任务处理性能即平常我们所说的单线。
12项整数运算和17项浮点运算会在1.5章节中详细说明,除此之外,还有两个随机数产生测试程序998.sperand(整数)和999.specrand(浮点),它们虽然也包含在套件中并得到运行,但是它们并不进行计时以获得得分。这两个测试主要是用来验证一些其他组件中会用到的PRNG随机数生成功能的正确性。
各个测试组件基本上都由C和Fortran语言编写,有7个测试项目使用了C++语言,而Fortran语言均用来编写浮点部分。
目录结构
源目录结构中每个文件/文件夹用途如下表:
| 文件/文件夹 | 用途 |
|---|---|
| Benchspec | 用于存放基准项测试代码、编译文件、运行文件、记录等 |
| Bin | 用于存放可执行文件,如specperl、runspec等 |
| Config | 用于存放配置文件 |
| Docs | 用于存放html格式文档 |
| Docs.txt | 用于存放txt格式文档 |
| redistributable_sources | 可再发行文件夹,包含归档文件、原始资源、SPEC修改的内容等 |
| Result | 用于存放测试结果 |
| Tools | 用于存放默认工具,安装时会编译安装tools中内容 |
| Cshrc | 设置SPEC CPU2006环境变量 |
| install.bat | 安装SPEC CPU2006,或生成二进制文件 |
| install.sh | 安装SPEC CPU2006完整的基准树,或生成二进制文件 |
| LICENSE | SPEC CPU2006基准产品的许可协议 |
| LICENSE.txt | SPEC CPU2006基准产品的许可协议 |
| MANIFEST | SPEC CPU2006的文件清单 |
| README | SPEC CPU2006的自述文件 |
| README.txt | SPEC CPU2006的自述文件 |
| Revisions | 版本更变说明文件 |
| Shrc | 设置SPEC CPU2006环境变量 |
| shrc.bat | 设置SPEC CPU2006环境变量 |
| SUMS.tools | SPEC CPU2006的bin文件夹的文件清单 |
| uninstall.sh | 卸载SPEC CPU2006工具二进制文件 |
| version.txt | 记录工具版本信息 |
测试方法
前置条件:保证机器物理内存大于或等于cpu核数的2倍(如CPU核数4,内存要大于等于8G)。
1.打开终端,安装依赖包:
apt-get install gcc g++ gfortran libbz2-dev
2.解压缩speccpu2006测试工具包,并附执行权限:
tar xvf speccpu2006-v1.0.1-newest.tar -C /home > /dev/null
chmod -R a+x /home/speccpu2006-v1.0.1
3.编辑 tools/src/buildtools 文件(311行和312行)
注释该行
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH
在./Configure行前加一行
export PERLFLAGS="-A libs=-lm -A libs=-ldl"
4.修改$SPECCCPU/tools/src/make-3.8.0/glob/glob.c文件,
在209行“#if !defined __alloca && !defined GNU_LIBRARY”和230行“#endif”前添加“//”注释掉。
5.安装speccpu2006:
./install.sh
在弹出的提示信息中,选择yes,后回车
6.加载环境变量:
. ./shrc (注意这里是:.空格./shrc)
7.检查SPEC CPU2006是否安装成功
runspec -V
8.选择相应配置文件进行测试:
arm平台:
runspec -c arm64.cfg -n 1 -r 1 all(单线程)
runspec -c arm64.cfg -n 1 -r N all(多线程)
x86_64平台:
runspec -c x86.cfg -n 1 -r 1 all(单线程)
runspec -c x86.cfg -n 1 -r N all(多线程)
mips平台:
runspec -c mips64.cfg -n 1 -r 1 all(单线程)
runspec -c mips64.cfg -n 1 -r N all(多线程)
参数说明:
-n 指定测试轮数(3轮测试的话测试完成后会自动算出Base Ratio的几何平均数(几何平均数与算数平均值不同,几何平均数是对各变量值的连乘积开项数次方根),3轮以下则不显示该分数,需要手动算分; 手动算几何平均数方法:可在EXCEL表格中执行函数 =GEOMEAN(G8:G24));
-r N,设置cpu核数,N和CPU核数一致,根据台式机或服务器的核数去指定多线程N的值;
all代表浮点和整型参数都测试。
基准测试项解析
整型测试
浮点测试

测试结果
查看测试结果:
①测试结果会在测试时打印在终端输出当中,可在终端中看到结果分数;或在SPECCPU/result目录中查看测试结果文件。
②执行整数测试时,会在SPECCPU/result目录中生成以下五个文件:
“CINT2006.xxx.flags.html”
“CINT2006.xxx.pdf”
“CINT2006.xxx.rsf”
“CINT2006.xxx.txt”
“CPU2006.xxx.log”
③执行浮点测试时,会在SPECCPU/result目录中生成以下五个文件:
“CFP2006.xxx.flags.html”
“CFP2006.xxx.pdf”
“CFP2006.xxx.rsf”
“CFP2006.xxx.txt”
“CPU2006.xxx.log”
其中:
flags.html文件中间存放了本次测试中每个测试项使用的所有Flags信息;
pdf文件为最常用的结果文件,其中包含了结果的柱状图、Hardware信息、Software信息、结果的数据表、General Notes、Flags等多种信息;
rsf文件为SPEC CPU2006是原始结果文件,可通过该文件重新生成其他结果文件;
txt文件内容和pdf文件类似,区别是txt为纯文本结果文件。
示例:
单线程测试结果如下图所示:
本次测试单线程整型值为:14.2
浮点型为:13.5
多线程测试结果如下图所示:
本次测试多线程整型值为:45
浮点型为:42.6
结果判断标准:
| 测试项 | 建议值 |
|---|---|
| 单线整型 | 桌面:8.8以上;服务器:11以上 |
| 单线浮点 | 桌面:8.3以上;服务器:9.6以上 |
| 多线整型 | 与CPU核心数相关。桌面可参考如下公式:多线整型分数 >= 单线整型分数 × CPU核心数 × 3/4 |
| 多线浮点 | 与CPU核心数相关。桌面可参考如下公式:多线浮点分数 >= 单线浮点分数 × CPU核心数 × 3/4 |
调优方案:
SPEC CPU2006测试中,测试系统的处理器、内存子系统和使用到的编译器(SPEC CPU2006提供的是源代码,并且允许测试用户进行一定的编译优化)都会影响最终的测试性能,而I/O(磁盘)、网络、操作系统和图 形子系统对于SPEC CPU2006的影响非常的小。
根据上述描述,影响因素包含CPU、内存、编译器。通常的优化方案包含:
1 更换性能更强劲的CPU
2 插满内存条
3 更换内存类型,如DDR3换成DDR4
4 更新性能更佳的内核版本
5 编译器:升级gcc、g++、gfortran
6 编译器使用的库:升级libc、libm、libdl、ld、libcrypt库版本
7 编译器的编译选项:选用合适的编译参数可起到优化作用,比如-O3、-ffast-math、-funroll-loops、-fprefetch-loop-arrays等。
8.编译器选择:选择优化更好的编译器,如icc、icpc、ifort等。
常见问题FAQ
1、问题一:
问题描述:SPEC CPU2006在make阶段出现报错“glob/glob.c:xxx: undefined reference to __alooca”
解决办法:修改$SPECCCPU/tools/src/make-3.8.0/glob/glob.c文件,在209行“#if !defined __alloca && !defined GNU_LIBRARY”和230行“#endif”前添加“//”注释掉。
2、问题二:
问题描述:运行SPEC CPU2006浮点测试,416.gamess测试项无结果,报错“IEEE_UNDERFLOW_FLAG”
解决办法:修改cfg文件中416.gamess编译参数中为“FOPTIMIZE=-O3 -march=native -fno-tree-dominator-opts -std=legacy -funroll-loops -ffast-math -fwhole-program -flto=jobserver -fuse-linker-plugin -fno-aggressive-loop-optimizations”
3、问题三:
问题描述:龙芯架构机器运行SPEC CPU2006报错“/bin/ld: cannot find lm、/bin/ld: cannot find lc、/bin/ld: cannot find lgfortran”
解决办法:1) 安装glibc-static和gfortran
2)创建libgfortran软链接:$ ln -s /usr/lib64/libgfortran.so.3 /usr/lib64/libgfortran.so
4、问题四:
问题描述:SPEC CPU2006执行runspec时报“Can’t locate strict.pm”
解决办法:加载SPEC CPU2006的环境变量,执行:$ source shrc
5、问题五:
问题描述:执行时报“/usr/bin/ld:cannot find -lstdc++”
解决办法:安装glibc-static和libstdc+±static包
6、问题六:
问题描述:执行了xxxx86架构上416、447、450项报错无结果
解决办法:
1、修改源文件ecp.F中的ZFNLM(121)为ZFNLM(125)
2、修改源文件nameio.F中的X(10)为X(1)
3、修改源文件qfmm.F中的COEFF(1,2))为COEFF(1,1))
4、修改x86.cfg文件中的416项编译参数,125行修改为FOPTIMIZE=-O3 -march=native -fno-tree-dominator-opts -std=legacy -funroll-loops -ffast-math -fwhole-program -flto=jobserver -fuse-linker-plugin -fno-aggressive-loop-optimizations
5、修改源文件parameter_handler.cc中的763和777行第一个单引号为双引号
6、修改源文件mpsinput.cc第75行,==0去掉,m_input前加!
7、重新运行这几项:runspec -c x86.cfg -n 1 416.gamess
runspec -c x86.cfg -n 1 447.dealII
runspec -c x86.cfg -n 1 450.soplex
7、问题七:
问题描述:SPEC CPU2006执行install.sh时,报perl相关错误
解决办法:原因为perl编译过程未引入数学库,需要修改$SPECCPU2006/tools/src/buildtools文件中关于perl编译部分的./configure命令行上面加入export PERLFLAGS=“-A libs=-lm -A libs=-ldl”
8、问题八:
问题描述:执行SPEC CPU2006后,有几率不会将运行文件删掉,这会导致占用大量磁盘空间,对于磁盘空间较少的系统很多服务起不来(比如图形起不来)。
解决办法:执行:$ rm -rf $SPECCPU/benchspec/CPU2006//run/run
9、问题九:
问题描述:运行SPEC CPU2006测试483.xalancbmk无结果,报错“copy #0 non-zero return code”
解决办法:安装SPEC CPU2006在英文目录下,重新运行此项:$ runspec -c arm64.cfg -n 1 483.xalancbmk
10、问题十:
问题描述:运行SPEC CPU2006时,464.h264f测试项死循环长时间卡住
解决办法:在cfg文件中464.h264ref项的编译选项处添加“-fno-aggressive-loop-optimizations”
11、问题十一:
问题描述:执行SPEC CPU2006运行报“Error Comparing……”类似错误
解决办法:使硬件环境达到SPEC CPU2006的要求:
1) 内存 > CPU核心数 × 2
2) 磁盘剩余空间 > CPU核心数 × 3
[转帖]CPU计算性能speccpu2006的测试方法及工具下载的更多相关文章
- 内存、cpu、硬盘使用率测试方法
平时测试过程中经常需要测试页面展示的系统资源信息是否正确,比如CPU.内存.硬盘等,一般是需要测试服务器的资源情况,服务器一般部署在linux上,今天总结一下测试方法: 1.CPU测试:(使用shel ...
- [转帖]CPU Cache 机制以及 Cache miss
CPU Cache 机制以及 Cache miss https://www.cnblogs.com/jokerjason/p/10711022.html CPU体系结构之cache小结 1.What ...
- [转帖]CPU 的缓存
缓存这个词想必大家都听过,其实缓存的意义很广泛:电脑整机最大的缓存可以体现为内存条.显卡上的显存就是显卡芯片所需要用到的缓存.硬盘上也有相对应的缓存.CPU有着最快的缓存(L1.L2.L3缓存等),缓 ...
- (Matlab)GPU计算简介,及其与CPU计算性能的比较
1.GPU与CPU结构上的对比 2.GPU能加速我的应用程序吗? 3.GPU与CPU在计算效率上的对比 4.利用Matlab进行GPU计算的一般流程 5.GPU计算的硬件.软件配置 5.1 硬件及驱动 ...
- CPU和Memory压力测试方法
一:用原生Centos自带的工具 1. CPU 下面命令会创建 CPU 负荷,方法是通过压缩随机数据并将结果发送到 /dev/null: cat /dev/urandom | gzip -9 > ...
- [转帖]CPU时间片
CPU时间片 https://www.cnblogs.com/xingzc/p/6077214.html CPU的时间片 CPU的利用率好CPU的 load average 是不一样的 Conntex ...
- [小工具] Command-line CPU Killer(附源码及下载链接)
博主有次在拆卸自己的笔记本电脑后,发现电脑如果静置时间长了有时会重启,但奇怪的是当我自己在电脑前工作的时候从来没有重启过.据此推测可能 CPU 完全空闲的时候风扇完全停转了,虽然 CPU 温度不高,但 ...
- cpu真实占用率检測工具
windows任务管理器所示CPU占用,一直在不断的变动跳跃 ,并不能反应真实的平均CPU占用率.迅雷下载工具也是一样 ,有时这些知名软件,反倒是没有做的这么人性化,细致.或 许就是不想让人知道 ...
- 性能分析之工具使用——cpu、io 、mem【工具分析】
nmon nmon 是一种在aix 与各种 Linux 操作系统上广泛使 用的监控与与分析工具,他主要记录以下内容: • cpu 占用率 • 内存使用情况 • 磁盘I/O 速度.传输和读写比率 • 文 ...
- [转帖]Windows 操作系统有哪些原生的工具和软件不被人了解却很有用?
Windows 操作系统有哪些原生的工具和软件不被人了解却很有用? 蛋蛋 司马米青E1E1九木 https://www.zhihu.com/question/25343481/answer/30798 ...
随机推荐
- Redis核心技术与实战
最近在读一篇关于Redis的专栏,叫做<Redis核心技术与实战>,作者在Redis方面研究颇深,读后非常受益,特在此做记录. 一.Redis基础 1)知识图和问题画像图 Redis知识全 ...
- 数仓在线运维:如何进行在线增删CN?
摘要:集群运行过程中,根据集群的综合负载和业务接入情况进行分析:增加CN可以适当降低CPU消耗,增大接入连接数,分散CN节点业务压力,根据实际情况来识别是否要增加CN,如果是提升集群容量和扩展比能力, ...
- Axure Axhub Charts 数据编辑、显示
Axhub Charts图表元件库: https://www.axureshop.com/a/100749.html
- MySQL 恢复误删除数据
如图:我们将删除 id=2的数据,并恢复 SHOW BINARY LOGS; You are not using binary logging show binlog events in 'mysql ...
- 数据工程师必备的8项技能,不要只知道Python!
欢迎关注公众号:机器学习算法与Python实战(ID:tjxj666) 原作:Mohammed M Jubapu 译者:机器学习算法与Python实战(公众号ID:tjxj666) 英文:https: ...
- let、var、const区别
1.var:传统的变量声明方式 在ES5及之前的JavaScript版本中,我们通常使用var关键字声明变量.var具有以下特点: 函数作用域:变量的作用域限制在声明的函数内部,如果在函数外部访问,将 ...
- OpenShift 与 OpenStack:让云变得更简单
OpenShift 与 OpenStack 都是在 2010.2011 年左右创建的,用于构建可扩展云平台的开源技术,两者都用于在混合云环境中构建可扩展系统.从历史来看,OpenStack 的存在时间 ...
- C++岗位面试真题宝典 -- 操作系统篇
2.1 Linux中查看进程运行状态的指令.查看内存使用情况的指令.tar解压文件的参数. 参考回答 查看进程运行状态的指令:ps命令."ps -aux | grep PID",用 ...
- OS | 透过 inode 来理解硬链接和软链接
什么是inode? 每个文件都对应一个唯一的inode,inode用来存储文件的元信息,包括: 对应的文件 文件字节数 文件数据块的位置 文件的inode号码 文件的硬链接数 文件的读写权限 文件的时 ...
- Codeforces Round #623 (Div. 2) A~D题,D题multiset使用
比赛链接:Here 1315A. Dead Pixel 签到题, 比较四个值 max(max(x, a - 1 - x) * b, a * max(y, b - 1 - y)) 1315B. Home ...