SpecCPU2017 测试cpu性能
SpecCPU介绍见:
https://blog.csdn.net/qq_36287943/article/details/103601539
官网:https://spec.org/
1、SpecCPU2017是一套CPU子系统测试工具,包括4大种类套件共43个基准测试。4大种类套件如下:
整数型:SPECrate 2017 Integer,对应用例编号为5xx
SPECspeed 2017 Integer,对应用例编号为6xx
浮点型:SPECrate 2017 Floating Point,对应用例编号为5xx
SPECspeed 2017 Floating Point,对应用例编号为6XX
SPEC基准广泛用于评估计算机系统的性能。SPEC CPU套件通过测量几个程序(例如编译器GCC,化学程序游戏和天气程序WRF等)的运行时间来测试CPU性能。
benchmark 基准如下:(安装目录内)
43个benchmark的使用场景如下表所示:(官网)
2、Spec2017测试有两种评估方式,分为speed和rate。speed是测试完成一项任务需要的时间,即速度测试;rate是测试单位时间内可以完成多少任务,即throughput(吞吐量测试)。speed和rate测试又有整数(Integer)和浮点(Floating Point)测试之分、base(基准测试)和peak(峰值测试)之分,如果是要生成报告的测试,要么是使用base,要么是base和peak一起用。可通过设置测试模式来实现:
--tune base 或者 --tune all 默认是base 可以选择base, peak, or all ,Report 首先是base,其次是peak.
speed与rate说明 (速度与吞吐量)
speed:包含10个整形测试和10个浮点测试。speed测试只运行一次测试题,测试分数高,说明单次运行时间短。
rate:包含10个整形测试和13个浮点测试,rate测试是运行多个相同的测试题,运行数量由测试者指定,分数高,代表更大的通量(固定时间处理问题的数量)
base与peak说明 (基准与峰值)
base:base是简单的标准的配置
peak:peak是可以提供更多个性化的配置编译选项
Spec2017 计算rate分值的公式:ratio=copies*(reference_time/test_time)
copies:指定相同问题的数量
reference_time:SPEC给出的参考时间
test_time:测试得出的时间
说明:公式含义为,参考时间与单份测试所用时间的比值。ratio越高表示相同时间可以处理更多的问题,即机器的通量高。本测试过程中设置copies,分别为对应cpu的核数。
Spec2017 计算speed分值算法公式:ratio=reference_time/test_time
reference_time:SPEC给出的参考时间
test_time:测试得出的时间
ratio越高表示完成同样的问题用时更少。
3、整数和浮点
cpu整数能力 (执行加法,减法,乘法)
cpu浮点能力(执行除法,也就是小数点的位移)
SpecCPU2017 工具安装步骤
1、下载软件(推荐使用1.0.5或更高版本的SPEC CPU 2017。本例中使用的版本为1.0.5)
a.SPEC官网下载SPEC CPU2017测试工具。
https://www.spec.org/cpu2017/? ####官网收费下载
b.百度网盘下载cpu2017-1.05.iso
链接:https://pan.baidu.com/share/init?surl=kMoMJ5Ufg5oZql4HjyacAg
提取码:5thr
2、安装测试工具
安装步骤参考文章:
https://support.huaweicloud.com/instance-evaluation-ecsie/ecsie_ipeg_0001.html
其中
a.在编译源码升级gcc时候mpc的包有点问题,需要重新官网下载源码包
https://mirrors.sjtug.sjtu.edu.cn/gnu/mpc/mpc-1.0.3.tar.gz
b.编译gcc时有个报错需要用到gcc-c++ ,故需要安装gcc-c++
3、测试步骤
a.Speccpu2017 安装完成需执行命令
source shrc
runcpu --config=spec17-opti-gcc7.3.cfg all --tune=all –reportable
runcpu --config=spec17-opti-gcc7.3.cfg all --threads 98 --copies=98 --tune=all –reportable
--threads 线程数(貌似指定后未生效仍是1)
-- copies参数的取值必须等于当前CPU核数
部分参数说明
runspec -config=xxx.cfg -size=ref -r 4 -tune=base -noreportable -o txt,screen,pdf -I -iterations=3 all
a)配置文件:--config spec17-opti-gcc7.3.cfg,配置文件中可以包含上述命令的所有信息,但是runspec命令的优先级高。此文件在spec的解压目录下,由上述文章中已有可直接使用。
b)测试规模: --size ref(测试规模有test,ref,train其中test最小跑的时间最短,如果测试编译器正确性的时候可以用test规模,但是想测试性能时候用ref)
c)测试次数:iterations=3次(编译器性能稳定时候测一次就行),也可以写成n 3;
tips:如果想得到加权统计的结果,也就是常说的cpu的spec分数,需要设置iterations大于等于3。
d)测试范围: all 表示进行fp和int测试(将all替换成intrate 或 fprate 进行定点和浮点的测试;将all替换成456/444等文件编号,表示对某一测试项进行单独测试)可选 'fprate', 'fpspeed', 'intrate', 'intspeed' or 'all'.
对于CPU的SPEC测试,默认这一项是all,但是对于其中的某一项测试分数不满意,可通过指定此测试项的编号,进行单独测试。测试也会得到一个分数,做单项的性能调优时候,可以用得到。
e)输出格式:-o text,screen,pdf 表示测试完成,生成报告的格式,依次分别是txt,屏幕显示和pdf格式,保存目录在spec解压目录result中。
f)noreportable && reportable : 表示检测/不检测生成的二进制文件是否修改过。
--reportable 如果原来生成的二进制文件被修改了,则运行时会自动重新编译生成二进制文件,确保运行的程序是原始的程序。
g)测试核数:-r 设置测试的CPU核心数目;
h)测试模式:-tune = base 基准测试;-tune = peak 峰值测试;-tune默认是base 可以选择base, peak, or all ,Report 首先是base,其次是peak.
i)-I : 表示测试中,如遇报错,略过错误继续测试;
正确运行结果如下:
运行过程
Runcpu 运行时间会很长,大概3天以上
运行结果汇总在安装目录下的result目录下
在运行过程中,需要查看执行完哪些用例可以查看
cat cat CPU2017.001.log.debug | grep -i success
参考资料
[1] https://blog.csdn.net/qq_36287943/article/details/103601539
[2]https://support.huaweicloud.com/instance-evaluation-ecsie/ecsie_ipeg_0001.html
[3]https://www.spec.org/cpu2017/Docs/quick-start.html
[4]https://www.spec.org/cpu2017/Docs/runcpu.html
[5]https://www.spec.org/cpu2017/Docs/overview.html
问题1:
测试Intel(Intel(R) Xeon(R) Gold 5220 CPU @ 2.20GHz 共72C) cpu时候执行命令报错
runcpu --config=spec17-opti-gcc7.3.cfg fprate –threads 72 --tune=all –reportable
查看top 服务器的负载到80%+,查看执行过程中发现
未能发现有用信息,结合服务器cpu负载为80%+,cpu使用率搭99%,判断可能是cpu超负载运行,从而把程序kill 掉,继续查看执行的步骤发现 copies 指定为 96(配置文件内被写死了) 而服务器为72核
修改执行命令加上参数
runcpu --config=spec17-opti-gcc7.3.cfg fprate –threads 72 —copies=72 --tune=all –reportable
之后 copies 显示为72,用例可以继续执行下去
问题2:执行命令指定的线程数未生效,暂未找到原因
其他参数见:
https://www.spec.org/cpu2017/Docs/runcpu.html
SpecCPU2017 测试cpu性能的更多相关文章
- Linux下测试CPU性能
一.安装stress服务 1.下载stress_1.0.1.orig.tar.gz安装包 2.解压tar xvf stress_1.0.1.orig.tar.gz 3.进入解压目录执行./config ...
- 来一个使用sysbench测试cpu性能的简单脚本
#!/bin/bash for ((i=1; i<16; i++)); do sysbench cpu run --cpu-max-prime=10000 --threads=4 --time= ...
- 关于如何测试cpu性能的命令操作 linux系统
for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/d ...
- Linux 下用 superpi 测试 CPU 性能
- intel和AMD CPU性能对比(2016年CPU天梯图)组装电脑必读!
http://www.365pcbuy.com/article-411.html 特别提示:此文已经于2016年10月12日更新!内容变动较大,请细细品鉴! 如何为客户推荐高性价比机型是我站的重要工作 ...
- 使用SQLIO测试磁盘性能
SQLIO 是一个用于测试存储系统能力的命令行工具,用以获取存储系统相关的性能指标,以判断系统的 I/O 处理能力. 在微软的网站可以下载 SQLIO 的安装包,安装后目录中会出现如下文件: EULA ...
- Android IOS WebRTC 音视频开发总结(五六)-- 如何测试网络性能?
本文主要介绍如何测试网络性能,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help 网络性能直接决定了视频通话效果,比如qq,很多时候我们我们觉得通 ...
- ARM CPU与Intel x86 CPU性能比较
Qualcomm ARM CPU与Intel x86 CPU性能比较 随着移动互联网时代的到来,Qualcomm(高通).Texas Instruments(德州仪器)等基于ARM架构的CPU受到越来 ...
- Apache JMeter--网站自动测试与性能测评
Apache JMeter--网站自动测试与性能测评 2013-02-28 15:48:05 标签:Jmeter From:http://bdql.iteye.com/blog/291987 出于学习 ...
- iozone测试磁盘性能
什么是iozone? iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能. 可以测试 Read, write, re-read,re-write, read ...
随机推荐
- ionic+vue+capacitor系列笔记--capacitor3.X和2.X+android自定义capacitor的JSbridge插件注册与使用(不同版本注册方式不同,返回值格式也不同,使用方法也不同)
经过我的多番折腾,终于搞明白了这个东西的用法,不同版本的注册方法,使用方法都不一样,现在把这个折腾的结果记录下来,造福大家~ 首先编写一个类,然后注册,注意,这个和2.x不一样,2.x的时候我们会使用 ...
- 穿透的switch语句-循环概述与基本组成部分
穿透的switch语句 在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运 行,直到遇到break,或者整体switch结束. pu ...
- 2023牛客寒假算法基础集训营4 A-H+JLM
比赛链接 A 题解 知识点:数学. 算一下发现 \(3\) 最好,\(2,4\) 并列, \(4\) 以后递减.于是,特判 \(3\) ,其他取最小值. (众所周知, \(e\) 进制最好qwq. 时 ...
- DaemonSet方式部署nginx-ingress
前言 nginx-ingress是k8s官方维护的一个Ingress Controller,具体使用,官方有详细的文档:https://kubernetes.github.io/ingress-ngi ...
- 分布式事务 | 使用DTM 的Saga 模式
DTM 简介 前面章节提及的MassTransit.dotnetcore/CAP都提供了分布式事务的处理能力,但也仅局限于Saga和本地消息表模式的实现.那有没有一个独立的分布式事务解决方案,涵盖多种 ...
- drf-day2——restful规范、序列化反序列化、基于django编写五个原生接口、drf介绍和快速使用、cbv源码分析
目录 一.restful规范(重要,不难) 概念 十个规范 二.序列化反序列化 三.基于django原生编写5个接口 四.drf介绍和快速使用 概念 安装 代码 五.cbv源码分析 六.作业 1.使用 ...
- JavaScript 、三个点、 ...、点点点 是什么语法
笔者在学习ts函数式的时候见到这样的写法,这个语法是es6的扩展运算符,可以在函数调用/数组构造时, 将数组表达式或者string在语法层面展开:还可以在构造字面量对象时, 将对象表达式按key-va ...
- Vue11 vue的data中属性的值(基础数据类型和对象)
1 代码 <body> <div id="root"> <h1>{{name}}</h1> <h1>{{obj}}< ...
- .net core 阿里云接口之将指定的OSS文件下载到流
紧接上文,.net core 阿里云接口之获取临时访问凭证_SunshineGGB的博客-CSDN博客 本文继续阿里云接口调用,将指定的OSS文件下载到流. 直接上代码: /// <summar ...
- .net core 前端传递参数有值 后端接收到的数据却是null
1.问题分析 在做接口测试时,偶然出现了前端输出有值,但是后端断点调试时却出现接收参数总是为null的情况 2.解决办法 前端打印log,看前端的每一个传值的数据类型,与后端请求参数类进行认真的一一比 ...