SPEC CPU2017的runcpu命令使用

2024-09-06 03:28

本文主要是介绍SPEC CPU2017的runcpu命令使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 基本语法

runcpu [options] [benchmark_list]

  • options: 可选参数,用于控制测试的运行方式、输出格式、配置文件等。
  • benchmark_list: 可以是单个基准测试名称或一组基准测试,如 500.perlbench_rall(表示运行所有基准测试)。例如,
    单独运行 500.perlbench_r
    runcpu 500.perlbench_r
    可以使用通配符或组名来一次运行多个基准测试。例如,运行所有C++基准:
    runcpu CXX
    可以运行所有基准:
    runcpu all

2. 常用选项

  • --config=<filename>:指定配置文件,例如 --config=myconfig.cfg。配置文件定义了编译器设置、优化级别、系统设置等参数,通常位于 config/ 目录下。
  • --tune=<base|peak|all>:选择基准测试的优化模式。优化模式可以是:1、base: 标准优化模式,严格遵守优化规则。2、peak: 更加激进的优化设置。3、all: 同时执行 basepeak 优化。
  • --size=<test|train|ref>:选择基准测试数据集的大小,test使用小型测试数据集(用于快速运行和验证),train使用中等规模的数据集(通常用于调试),ref使用完整的参考数据集(用于正式性能测量)。
  • --reportable:生成符合报告要求的测试结果。此选项用于生成正式的基准测试报告(不能与调试、测试等模式混用)。
  • --action=run:运行指定的基准测试。其他可能的操作包括:1、build:仅编译基准测试,而不执行。2、validate:仅验证基准测试结果是否符合规范。3、clean:清理测试生成的文件。4、setup:为指定的基准测试准备运行环境,但不执行测试。
  • --iterations=<n>:指定基准测试的重复运行次数(默认是 3 次)。增大迭代次数可以提高测试结果的精度。
  • --threads=<n>:为并行基准测试指定线程数(用于 SPECrate 测试)。如果未指定,测试将默认使用系统的核心数。
  • --copies=<n>:为并行基准测试指定并发执行的副本数(多副本模式下每个副本运行一个基准测试)。常用于多核系统的吞吐量测试。
  • --output=filename:指定输出文件名称。默认情况下,输出会保存在result(结果)目录中。
  • --rawformat=format:指定输出的格式。常用的格式包括:1、text:生成文本报告。2、html:生成 HTML 格式的报告。3、pdf:生成 PDF 格式的报告。
  • --loose:允许某些调优选项不符合标准规范。例如,可能允许在 base 调优模式下使用一些 peak 模式的选项。
  • --rebuild:强制重新编译所有基准测试。即使已有编译结果,也会重新编译。
  • --deletework:运行测试后删除临时工作目录。这有助于节省磁盘空间。
  • --setprocgroup:为每个副本/线程分配到单独的 CPU 处理组。这有助于多核处理器环境中优化资源使用。
  • --validonly:仅执行结果验证,而不重新运行基准测试。通常用于对现有结果进行合规性检查。
  • --noaltconfig:禁止使用配置文件中的 altconfig选项。
  • --verbose:启用详细输出,显示更多运行时信息。
  • --logfile=<filename>:将输出日志保存到指定文件中。
  • --feedback:在编译和运行之间使用反馈机制(如果配置文件支持)。
  • --debug:启用调试模式,输出额外的调试信息。这对排查错误或了解运行细节非常有用。

3. 结果查看与处理

特别注意,--reportable--output 是两个不同的参数,它们的作用和用途是不同的:

3.1 --reportable 参数

--reportable 参数用于生成符合 SPEC 基准测试提交标准 的结果报告。它的主要功能是确保测试结果符合SPEC的规范,可以正式提交给SPEC进行认证和审核。

  • 当使用 --reportable 运行基准测试时,系统会强制遵循一些规定,如使用参考数据集(ref)、标准的配置文件、没有超出允许范围的优化选项等。
  • --reportable 的目的是生成正式的、可报告的结果,这些结果可以被用来进行系统性能的对比和发布。
  • 不指定输出文件--reportable 本身不会指定输出文件的位置,它生成的报告会存放在默认的结果目录(通常是 result/ 目录)中。
3.2 --output 参数

--output 参数用于指定测试结果文件的 输出文件名 和路径。

  • 这个参数允许用户自定义保存测试结果的文件名和位置。例如,如果用户想将结果保存到特定的文件或特定的目录,可以使用 --output
  • --output 的结果可以是报告的多种格式(文本、HTML、PDF、CSV 等),具体格式取决于是否与其他参数一起使用,如 --rawformat
  • --output 参数不强制遵循 SPEC 的提交规则,它仅用于控制结果文件的保存和命名,而不改变测试的严格性或规范性。
3.3 区别与用途
  • --reportable 控制的是测试的 合规性 和生成报告的 严格性,用于确保结果可以提交给SPEC。
  • --output 控制的是测试结果的 文件存储位置和名称,用于灵活地管理输出文件。
    这两个参数可以 同时使用,当用户需要生成符合提交标准的报告并且想要自定义输出文件的路径时,可以如下组合,生成一份符合 SPEC 提交要求 的报告,并将其保存为 my_report.txt 文件。
    runcpu --reportable --config=myconfig.cfg --tune=base --size=ref --output=my_report.txt all
3.4 基准测试结果查看、导出和分析
3.4.1 导出结果

导出结果时,用户可以选择多种格式,例如PDF、CSV等,以便进行进一步的分析或分享。
(1) 导出为PDF格式文件
要将结果导出为PDF文件,可以使用 runcpu 命令结合 --rawformat 选项:
runcpu --reportable --rawformat=pdf --output=myresults.pdf
此命令生成的PDF文件将包含最近一次运行的基准测试结果报告。

(2) 导出为CSV格式文件
对于需要进一步数据分析的情况,可以将结果导出为CSV格式,以便导入到数据分析工具中:
runcpu --reportable --rawformat=csv --output=myresults.csv
CSV文件中的数据可以用Excel、Python或其他工具进行详细分析。

3.4.2 查看结果

SPEC CPU2017运行完基准测试后,自动生成的结果会存储在指定的目录中。查看这些结果有多种方式:
(1) 结果目录
测试结果通常存储在安装目录的 result/ 子目录中。每次测试运行都会生成一个新的结果文件夹,文件夹名称通常以时间戳和测试配置命名。例如:
/path/to/cpu2017/result/cpu2017.004.refspeed2024-09-05-12-30-45/

(2) 查看HTML或文本报告

  • HTML文件:可以在浏览器中查看,包含完整的测试结果和图表。打开路径中的 .html 文件即可:
    firefox /path/to/cpu2017/result/cpu2017.004.refspeed2024-09-05-12-30-45.html
  • 文本文件:用 cat 或其他文本编辑工具查看 .txt 文件中的结果:
    cat /path/to/cpu2017/result/cpu2017.004.refspeed2024-09-05-12-30-45.txt

(3) 使用 runcpu 查看结果
用户也可以通过命令行工具 runcpu 直接查看上一次运行的测试结果:
runcpu --reportable last
此命令会显示上一次基准测试运行的详细报告,包含性能分数和相关数据。

3.4.3 深入分析和自定义报告

用户可以根据需要定制输出格式,或生成更详细的报告:
(1) 自定义输出格式
SPEC CPU2017提供了自定义输出格式的选项。通过修改配置文件或使用命令行参数,用户可以定义特定的报告格式。详见SPEC CPU2017的官方文档或 runcpu --help

(2) 反馈机制
通过 --feedback 选项,用户可以在编译和运行之间使用反馈机制,以优化运行。例如:
runcpu --feedback all
该选项可以生成包含反馈优化的结果,用于更深入的性能调优分析。

3.4.4 比较不同测试的结果

比较多次运行的结果是分析性能趋势和验证系统一致性的重要步骤。用户可以手动比较结果目录中的数据,或者编写脚本自动化比较过程。
(1) 手动比较
查看每个测试的结果文件(如 .txt.html),对比不同运行的性能分数、时间和资源消耗。
(2) 自动比较
使用脚本或工具对比多个结果文件中的关键指标,如SPECspeed和SPECrate分数。这样可以方便地生成趋势图或汇总报告。

3.4.5 归档结果

为了长期保存和管理基准测试结果,建议将结果文件打包归档。可以使用以下命令将结果目录打包为压缩文件:
tar -czvf spec_results_backup.tar.gz /path/to/cpu2017/result/
这样会生成一个包含所有结果的压缩文件 spec_results_backup.tar.gz,便于日后参考或恢复。

4. 使用示例

以下是一些常见的使用示例:

示例 1:仅编译基准测试而不运行

runcpu --action=build all
此命令只编译所有基准测试,但不实际运行。

示例 2:运行所有基准测试并使用指定配置

runcpu --config=myconfig.cfg --tune=base --size=ref all
此命令运行使用myconfig.cfg 配置文件,运行所有基准测试,使用标准(base)优化模式和参考数据集(ref)。

示例 3:运行单个基准

runcpu --config=myconfig.cfg --tune=base 500.perlbench_r
此命令使用 myconfig.cfg 配置文件,在 base 模式下运行 500.perlbench_r 基准测试。

示例 4:运行单个基准测试并指定输出结果格式

runcpu --config=myconfig.cfg --tune=peak --size=ref --rawformat=csv --output=result.csv 500.perlbench_r
此命令运行 500.perlbench_r 基准测试,使用峰值(peak)优化,并导出结果为CSV格式。

示例 5:并行运行多个副本

runcpu --config=myconfig.cfg --tune=base --size=ref --copies=4 all
此命令使用 myconfig.cfg 配置文件,运行所有基准测试,使用 base 模式、参考数据集,并同时运行4个副本。

示例 6:多线程和多副本运行

runcpu --config=myconfig.cfg --tune=base --threads=8 --copies=4 all
此命令在 8 个线程和 4 个副本的情况下运行所有基准测试。

示例 7:生成报告

runcpu --reportable --config=myconfig.cfg --tune=base --size=ref all
此命令生成一个可报告的结果,符合 SPEC 提交要求。

示例 8:查看最近运行的结果

runcpu --reportable last
此命令查看最近一次测试运行的结果报告。

5. 总结

通过上述步骤,用户可以高效地查看、导出和分析SPEC CPU2017的基准测试结果,包括:

  • 深入分析:利用自定义输出格式和反馈机制,生成详细报告和优化结果。
  • 比较结果:手动或自动化比较多次运行的结果,分析性能趋势。
  • 归档结果:打包并保存结果文件,方便日后查阅和管理。
    从而深入了解系统性能并进行优化,具体来说,
  • runcpu 是SPEC CPU2017的核心工具,用于运行基准测试和生成报告。
  • 可以通过 --config--tune--size 等参数来控制测试的配置和数据集。
  • 可以通过调整 --threads--copies 等并发选项,可以优化并行基准测试的性能。
  • 可以通过 --reportable--output 等选项导出为不同的格式,具体地,--reportable 用于生成正式、可提交的报告,--output 用于指定测试结果文件的保存路径和文件名。用户可以同时使用这两个参数,确保报告符合提交标准的同时,灵活管理输出文件的命名和位置。
  • 可以使用 --rawformat 将结果设置导出为PDF、CSV等的具体格式,以便分析或分享。
  • 可以通过结果目录中的HTML或文本文件,或使用 runcpu --reportable 查看上次运行结果。

官方参考资料https://www.spec.org/cpu2017/Docs/runcpu.html

这篇关于SPEC CPU2017的runcpu命令使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140871

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有