SPEC CPU2006的安装和使用
https://www.spec.org/download.html
http://blog.lazzzy.xyz/2017/09/15/SPEC_CPU2006/
BenchMark SPEC CPU2006
0x00 背景
最近在帮师兄做静态插桩,然后插桩的工作做得差不多了,需要用到benchmark做性能测试,简单记录一下SPEC CPU2006的安装和使用过程。中间也遇到了许多坑,谨记。
0x01 安装
机器版本:Ubuntu 16.04.3 LTS
首先下载CPU2006到本地,一般会下载到镜像文件,解压之后可以找到install.sh
BenchMark SPEC CPU2006
发表于 2017-09-15 | 分类于 技术分析 | 阅读次数
0x00 背景
最近在帮师兄做静态插桩,然后插桩的工作做得差不多了,需要用到benchmark做性能测试,简单记录一下SPEC CPU2006的安装和使用过程。中间也遇到了许多坑,谨记。
0x01 安装
机器版本:Ubuntu 16.04.3 LTS
首先下载CPU2006到本地,一般会下载到镜像文件,解压之后可以找到install.sh
~$ ./install.sh
SPEC CPU2006 Installation
Top of the CPU2006 tree is '/media/*/SPEC_CPU2006v1.1'
Enter the directory you wish to install to (e.g. /usr/cpu2006)
/home/myname/cpu2006
Installing FROM /media/*/SPEC_CPU2006v1.1
Installing TO /home/myname/cpu2006
Is this correct? (Please enter 'yes' or 'no')
yes
...
之后等待安装完成,到此安装过程结束。
0x02 编译工具包
根据文档,在使用之前需要先配置环境。令人欣慰的是在CPU2006中已经集成了配置环境的方法,只需要执行一条命令就可以完成配置操作
source ./shrc
每次重新打开terminal的时候,都需要先运行该命令,之后才可以正常使用。
在编译工具之前,我们首先需要进入config文件夹,根据自己的需要,复制一份已有的配置文件模板作为自己使用的文件,例如
cp Example-linux64-amd64-gcc43.cfg my.cfg
例如我们只需要测试int型的CPU性能,我们可以执行以下操作:
runspec --config=my.config -T base --action=build int
在编译生成gcc的过程中遇到一些问题,查阅资料发现是因为编译CPU2006需要gcc-4.9及以下的版本才可以编译,因此需要安装低版本的gcc。可以通过apt-get来安装。
sudo apt-get install 4.9
安装完成之后,可以通过下面的命令实现gcc版本切换
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40
接着,输入以下命令可以切换版本
sudo update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/gcc-5 100 auto mode
* 1 /usr/bin/gcc-4.9 50 manual mode
2 /usr/bin/gcc-5 100 manual mode
Press <enter> to keep the current choice[*], or type selection number:
如果有遇到g++也需要不同版本的问题,同样使用该办法来实现g++的切换。
安装完成之后,如果没有问题,重新执行编译命令,便可以编译完成。
0x03 运行
如果一切没有问题,接下来可以进行运行测试
runspec --config=my.cfg -T base --reportable int
如果需要生成报告,一定要写--reportable参数,运行该命令时,程序会自动检测编译生成的二进制文件有没有修改过,如果原来生成的二进制文件被修改了,则运行时会自动重新编译生成二进制文件,确保运行的程序是原始的程序。
0x04 运行插桩过后的程序
因为运行时会检测程序是否是编译结束的程序,因此,就存在一个问题,插桩过的程序一定被修改了,如何运行,查阅了一些资料发现:
程序运行之前做的检测只是对比可执行程序的 MD5
可执行程序的 MD5 值在 my.config 文件中保存
因此,只需要在插桩后将可执行程序新的 MD5 写入 my.config 文件中,就不会出现重新编译的情况,这也算是一种投机取巧的办法。可以写一个小脚本自动来填写MD5值。
当然,如果不需要生成报告,也可以在运行时加入参数--nobuild
配置文件中需要加的参数,程序的运行环境LD_PRELOAD
preENV_LD_PRELOAD=lib/libredundantguard.so
0x05 总结
搞了有几天的spec CPU2006,也只是知道了一点点的东西,记录下来,以免以后会忘记。
SPEC CPU2006的安装和使用的更多相关文章
- Building SPEC CPU2006
https://developer.amd.com/wordpress/media/2012/10/building_speccpu.html Building SPEC CPU2006 This f ...
- spec cpu2006 官网
https://www.spec.org/cpu2006/Docs/install-guide-unix.html
- 【转载】]基于RedHatEnterpriseLinux V7(RHEL7)下SPEC CPU 2006环境搭建以及测试流程 介绍、安装准备、安装、config文件以及运行脚本介绍
https://www.codetd.com/article/1137423 <版权声明:本文为博主原创文章,未经博主允许不得转载> 本次利用SPECCPU2006测试工具来进行Intel ...
- 【转载】基于RedHatEnterpriseLinux V7(RHEL7)下SPEC CPU 2006环境搭建以及测试流程(之一)——介绍、安装准备、安装、config文件以及运行脚本介绍
基于RedHatEnterpriseLinux V7(RHEL7)下SPEC CPU 2006环境搭建以及测试流程(之一)--介绍.安装准备.安装.config文件以及运行脚本介绍 其他 2018-0 ...
- CentOS6.5下安装Apache2.4+PHP7
CentOS6.5下安装Apache2.4+PHP7 http://blog.csdn.net/along602/article/details/42695779 http://www.th7.cn/ ...
- 转-4年!我对OpenStack运维架构的总结
4年!我对OpenStack运维架构的总结 原创: 徐超 云技术之家 今天 前言 应“云技术社区”北极熊之邀,写点东西.思来想去云计算范畴实在广泛,自然就聊点最近话题异常火热,让广大云计算从业者爱之深 ...
- [知乎]这可能是最全面的龙芯3A3000处理器评测
这可能是最全面的龙芯3A3000处理器评测 第一千零一个人 已关注 蓬岸 Dr.Quest . https://zhuanlan.zhihu.com/p/50716952 这里面链接很全. 立党 ...
- 【转帖】龙芯3A3000处理器深度评测:和Intel、AMD差距巨大
龙芯3A3000处理器深度评测:和Intel.AMD差距巨大 https://www.eefocus.com/mcu-dsp/424623/r0 作者非计算机科班毕业 让我汗颜. 我计算机毕业都不知道 ...
- 对OpenStack运维架构的总结(转)
这里,仅从技术角度出发,谈谈OpenStack云平台在部署.架构和运维实施等方面的感想. 缘起,在2014年大二首次接触到OpenStack,当时国内外资料远没有当前这么丰富,为安装一个OpenSta ...
随机推荐
- 亲测有效JS中9种数组去重方法
码文不易,转载请带上本文链接,感谢~ https://www.cnblogs.com/echoyya/p/14555831.html 目录 码文不易,转载请带上本文链接,感谢~ https://www ...
- 添加ASP.NET文件夹(3)
注意:这里添加的是ASP.NET文件夹,而不是普通网站下项目创建的文件夹 ASP.NET文件夹主要有7个 1.Bin文件夹包含程序所需的所有已编译程序集 2.App_Code文件夹包含页所使用的类的源 ...
- VS2019 自定义项目模板
前言: 使用"宇宙最强IDE"开发项目时,都需要根据不同情况选择一个项目模板,来满足开发需求:如下 VS为我们提供了基础的项目模板,但现有项目模板未包含基础功能如:日志输出.审计日 ...
- [Fundamental of Power Electronics]-PART II-9. 控制器设计-9.1 引言
9.1 引言 在所有的开关变换器中,输出电压\(v(t)\)都是输入电压\(v_{g}(t)\),占空比\(d(t)\),负载电流\(i_{load}(t)\)和电路元件值的函数.在DC-DC变换器应 ...
- OGG-集成模式抽取与数据库参数streams_pool_size关系
一.学习目标 Oracle数据库,使用OGG集成模式抽取进程启动时,如果没有配置合理的streams_pool_size参数可能会过一段时间就报错abend! 那么我们如何配置这个参数的大小?如何计算 ...
- 轻松理解 Spring AOP
目录 Spring AOP 简介 Spring AOP 的基本概念 面向切面编程 AOP 的目的 AOP 术语和流程 术语 流程 五大通知执行顺序 例子 图例 实际的代码 使用 Spring AOP ...
- Jmeter对数据库批量增删改查
本文主要的内容是使用Jmeter对数据库进行数据的操作,包括单条语句的增删改查,多条语句的增删改查,本文主要介绍操作流程,关于流程的运作原理,对原理感兴趣的同学可自行查阅资料. 首先需要准备一个数据库 ...
- JAVAEE_Servlet_19_重定向可以解决页面刷新问题(sendRedirect)
重定向可以解决页面刷新问题(sendRedirect) 在向数据库中添加数据的时候,如果使用转发(getRequestDispatcher),数据插入成功后,转发到提示插入成功页面,在数据插入成功页面 ...
- E - Minimal Subarray Length(连续区间和)
题目链接 题意:给出n个数,求加和大于x的最短区间的区间长度. 如果前i个数字和为y,那么如果前j数字的和小于等于y-x,那么i-j就是一种可能的情况,我们对于所有的i找出前面最大的j就可以了,因为数 ...
- 【Springboot项目启动异常】项目启动,数据库连接异常
今天使用Springboot 整合 MybatisPlus 准备写一个Demo,在项目启动时,频繁出错,在此记录整个问题的解决过程 问题如下图 人工翻译一遍,主要意思就是没有检测到数据库驱动,也就是说 ...