配置文件定义了环境信息、编译构建、运行、日志级别等一系列配置项,是GCBS与测试环境的重要交互方式。基于相同的软硬件环境和GCBS工具版本,用户使用相同的配置文件可稳定复现基本一致的测试结果。
配置文件是ini格式的文件,遵循业界通用的ini文件语法。您可以定制您的配置文件,并通过以下两种方式来指定它:
1、 通过--config
或-f
来指定配置文件的绝对路径;
2、 将配置文件放在config目录中,并通过--config
或-f
来指定文件名,文件后缀可以省略;
若未指定配置文件,GCBS将使用默认配置文件config_sample.ini
。
如果您还不知道如何编写配置文件,可以根据config目录中的默认配置文件config_sample.ini
做修改,下面是您可能感兴趣的与配置文件相关的说明。
1、大小写敏感;
2、注释以#或;开头,注释不会被视为配置项;
3、缩进代表本行内容为前一个配置项的值,如:
hardware_others = Hyper Threading: Enable
Turbo: Enable
software_others = None
此时GCBS读取解析后内存中hardware_others的值为:
Hyper Threading: Enable\nTurbo: Enable
配置文件提供的配置项有四种类型。 1、 通用配置项 配置文件提供了与命令行相似的通用配置项,可以有效降低命令行的复杂度。如在配置文件中定义:
action = standard
test_target = ServerSuite
copies = 10
report = pdf
那么以下两条命令行指令完全一致:
python3 gcbs.py
python3 gcbs.py --action=standard --test_target=ServerSuite --copies=10 --report=pdf
命令行优先级高于ini配置文件,若相同的配置项既出现在命令行又出现在配置文件,以命令行为主。
2、 测试和环境信息 配置文件支持描述配置项,补充描述被测计算机的软硬件环境系统,方便用户理解被测计算机产品信息,比如网卡、显卡的型号,GCBS工具获取不到或采集的型号不准确,用户可通过配置文件纠正配置信息。
3、 编译选项 配置文件提供配置项控制workload的编译行为。
4、 JAVA运行参数 配置文件提供配置项以方便用户进行JVM调优。
详情参阅 “配置项” 章节。
配置文件分为两个部分: 1、 general区 在命名区之前,通常用于定义本次运行的一些通用配置。如:
[general]
action = standard
test_target = ServerSuite
iterations = 1
copies = 1
multithread = 1
report = all
output_dir = output_dir
skip_fail = 0
skip_verify = 1
taskset = 0-3
#=============================Debug Options==================================
debug = 0
2、 命名区 命名区以一个区域标识行打头,如:
[ServerSuite.MemSuite]
CC = ${base_dir}/gcc
CC_VERSION = -v
CFLAGS = -Ofast
需要注意的是,多个命名区可能有相同的配置项,此时需要应用优先级规则来决定配置项的取值。优先级规则参阅“命名区”小节。
命名区以区域标识行打头,延续到下一个标识行。配置文件支持多个命名区,它们的顺序不会影响配置项的最终值。如果区域标识行有重复,它们标识的命名区内容会自动合并。 区域标识行的格式如下:
[compiler] 或者 [suite] 或者 [workload]
其中compiler为固定区域标识,代表默认的编译构建选项;
命名区标识可限制作用于某个测试套件或者某个workload,示例如下:
假设ServerSuite包括CPUSuite, MemSuite, CPUSuite包括scimarkpy_fft, MemSuite包括stream_single, stream_omp。
benchmark标识行可以为:
[ServerSuite] # 作用于ServerSuite下的所有子测试套件
[ServerSuite.CPUSuite] # 仅作用于ServerSuite下的CPUSuite子套件
[ServerSuite.MemSuite.stream] # 仅作用于ServerSuite.MemSuite下stream前缀的测试负载,包括stream_single和stream_omp
[ServerSuite.MemSuite.stream_omp] # 仅作用于ServerSuite.MemSuite下stream_omp负载
配置文件通过优先级规则来组织命名区的区域合并、冲突。
1、workload或suite的标识符优先级高于compiler固定标识符;
2、对suite和workload标识符,优先级如下:
高优先级 具体workload > 子套件sub-suite > 父套件suite 低优先级
例如:
[compiler]
CC = ${base_dir}/gcc
CC_VERSION = -v
CFLAGS = -Ofast
[ServerSuite]
CFLAGS = -O3
[ServerSuite.FileIOSuite]
CFLAGS = -O2
[ServerSuite.FileIOSuite.fio]
CFLAGS = -O0
python3 gcbs.py -t DesktopSuite --mode Desktop
python3 gcbs.py -t ServerSuite --mode Server
执行结果:
1、DesktopSuite中所有负载采用-Ofast编译;
2、ServerSuite中FileIOSuite以外测试套的负载采用-O3编译;
3、FileIOSuite中fio以外负载采用-O2编译,fio采用-O0编译。
Option | Default | Area | Explain |
---|---|---|---|
action |
standard | general | 指定本次工具的活动。 |
test_target |
[] | general | 指定本次运行的suite或workload。 |
iterations |
1 | general | 要运行的迭代次数。 |
copies |
1 | general | 指定运行副本数;默认为1,即单核运行;如果设为cpu最大核数,即满核运行。 |
multithread |
1 | general | 指定运行并发线程数。 |
report |
['all'] | general | 指定本次运行输出的报告类型。 |
output_dir |
output_dir | general | 设置工作目录,负载运行数据和测试结果报告都会存放到该路径下。 |
skip_fail |
0 | general | 值为1时,负载运行失败不退出程序。 |
skip_verify |
0 | general | 值为1时,程序跳过hash认证。 |
taskset |
[] | general | 绑核列表,由逗号分隔的一系列cpu核号构成,同时支持通过-分隔符来标识一个编号范围,如1-5等价于1,2,3,4,5。 当该列表长度大于copies时,只会选前copies的cpu核进行绑定,若小于copies,则会在超出列表长度时,从列表头重新绑定。 |
debug |
0 | general | 值为1时,开启debug模式。 |
Option | Default | Area | Explain |
---|---|---|---|
manufacturer |
"" | general | 硬件制造商。 |
product_model |
"" | general | 产品型号。 |
cpu_model |
"" | general | CPU型号。 |
netcards |
"" | general | 网卡信息。 |
raid |
"" | general | raid卡信息。 |
display_cards |
"" | general | 显卡信息。 |
os |
"" | general | 操作系统名称和版本。 |
tester_name |
"" | general | 测试者名称。 |
test_data |
"" | general | 测试时间。 |
software_others |
"" | general | 其他软件相关信息。 |
hardware_others |
"" | general | 其他硬件相关信息。 |
Option | Default | Area | Explain |
---|---|---|---|
LD_LIBRARY_PATH |
"" | compiler | 动态链接库搜索路径设置。 |
CC |
/usr/bin/gcc | compiler | 如何调用C编译器。 |
CC_VERSION |
-v | compiler | 如何获取C编译器版本。 |
CFLAGS |
"" | compiler | 既不是优化也不是可移植性的C语言编译标志。 |
CXX |
/usr/bin/g++ | compiler | 如何调用C++编译器。 |
CXX_VERSION |
-v | compiler | 如何获取C++编译器版本。 |
CXXFLAGS |
"" | compiler | 既不是优化也不是可移植性的C++语言编译标志。 |
CLD |
"" | compiler | 在编译C语言的程序时,如何调用链接器。 |
CXXLD |
"" | compiler | 在编译C++语言的程序时,如何调用链接器。 |
CLD_FLAGS |
"" | compiler | 适用所有C Workload使用的链接标志。 |
CXXLD_FLAGS |
"" | compiler | 适用所有CXX Workload使用的链接标志。 |
LD_FLAGS |
"" | compiler | 适用所有模块时使用的链接标志。 |
LIBS |
"" | compiler | 指定链接库选项。 |
AR |
ar | compiler | 应用于创建静态库,但是启用特殊选项(如:LTO)时,需要编译器自带AR工具(如:gcc-ar)。 |
RANLIB |
ranlib | compiler | 应用于静态库建立索引,以便编译器加速查找符号表。启用特殊选项(如:LTO)时,需要使用编译器自带RANLIB工具(如:gcc-ranlib)。 |
Option | Default | Area | Explain |
---|---|---|---|
java_options |
"" | compiler | 传递给JVM的调优参数。 |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。