[转帖]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 ...
随机推荐
- MongoDB系列:C#、Java驱动连接MongoDB以及封装(C#的MongoDBHelper,Java的MongoDBUtil)
一.C#驱动连接MongoDB 1.创建项目 执行命令:dotnet new console -n MongoDbDriverDemo 2.添加依赖包 执行命令:dotnet add package ...
- SVN工具基础知识
SVN工具基础知识 1.简介 1.全称Subversion,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现 在发展成为 Apache 软 ...
- 当GaussDB遇上了毕昇编译器
摘要:当应用软件及硬件确定后,编译器对应用的自动优化将成为应用性能的关键. 从应用优化说起 一个应用的优化通常有架构级优化.模块级优化和函数级优化,高性能作为云数据库GaussDB主打特性之一,其在这 ...
- OpenHarmony移植:XTS子系统之应用兼容性测试套件
摘要:本文通过实例分析下ACTS应用兼容性测试套件移植案例,以及移植过程中特定的操作的原理. 本文分享自华为云社区<移植案例与原理 - XTS子系统之应用兼容性测试套件>,作者:zhush ...
- 还在用 Excel 和 SQL?火山引擎 VeDI 这款产品帮你更快处理数据
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 对大多数职场打工人来说,看数据.用数据一直是项有"门槛"的工作. 特别是在企业业务快速发展的背景下,为 ...
- Hugging Face CEO: 2024 将是AI丰收年
来自CEO的新年祝福 ️附加了他对于2024年人工智能界的四大预测你觉得2024年人工智能和机器学习界会是什么样的呢?欢迎留言
- Ajax请求 content_type ajax发送Fromdata对象
目录 Ajax请求入门 ajax实现简单计算器 content_type urlencode fromdata application/json 自定义request.JSON ajax发送Fromd ...
- 你真的了解token续期嘛?
Spring Boot + Vue中的Token续签机制 在现代的全栈应用开发中,Spring Boot作为后端框架和Vue.js作为前端框架的组合非常流行.在这种架构中实现Token续签是保障应用安 ...
- ZOJ - 1610 区间修改+暴力单点查询
一.内容 题意:给定[1,8000]区间,给定n组操作,每次将一段区间修改成某种颜色(对上一次颜色进行覆盖),最后问你能看到多少种颜色,且每种颜色有多少段. 二.思路 题目给定的区间是(x, y]左开 ...
- 解决Github中使用Octotree时,出现 Error: API limit exceeded 报错 或者 Error: Connection error报错的问题(详细操作)
对于科研工作者来说,Github 是不可多得的利器,那么Octotree 插件的使用将会让用户在使用 Github 时拥有更好的体验,提高学习工作的效率.但是笔者在使用的过程中遇到以下这样的问题,下面 ...