Configuration File Syntax
The configuration file is in YAML format. You can find a good YAML tutorial here. Below is the documentation for all the top-level keys that are common to all commands.
benchmarks
A YAML list of benchmarks to run in each specified benchmark suite.
For example:
benchmarks:
dacapo2006:
- eclipse
dacapobach:
- avrora
- fop
specifies running to run the eclipse benchmark from the dacapo2006
benchmark suite; and the avrora and fop benchmarks from the dacapobach
benchmark suite. These benchmark suites have to be defined previously (usually
through an includes key).
Note that each benchmark of a benchmark suite can either be a string or a suite-specific dictionary. For example, for the DaCapo benchmark suite, the following two snippets are equivalent.
benchmarks:
dacapo2006:
- eclipse
benchmarks:
dacapo2006:
- {name: eclipse, bm_name: eclipse, size: default}
configs
A YAML list of configuration strings to be used to run the benchmarks. These are
specified as a runtime followed by a '|' separated list of
modifiers, i.e. "<runtime>|<modifier>|...|<modifier>".
For example:
configs:
- "openjdk11|ms|s|c2"
- "openjdk15|ms|s"
specifies running to use the openjdk11 runtime with ms, s, and c2
modifiers; and the openjdk15 runtime with the ms, and s modifiers. In
the example above, we assume that both the runtimes and modifiers have been
previously defined (in either the current configuration file or in an includes
file).
Each segment in the configuration strings can have whitespaces in them, so that it's easier for multi-line editing.
For example:
configs:
- "openjdk8 |foo-1 |bar|buzz"
- "openjdk15|foo-16| |buzz"
includes
A YAML list of paths to YAML files that are to be included into the current configuration file for definitions of some keys.
This is primarily used to provide re-usability and extensibility of
configuration files. A pre-processor step in running takes care of including
all the specified files. A flattened version of the final configuration file is
also generated and placed in the results folder for reproducibility.
The paths can be either absolute or relative.
Relative paths are solved relative to the current file.
For example, if $HOME/configs/foo.yml has an include line ../bar.yml, the
line is interpreted as $HOME/bar.yml.
Similarly,
includes:
- "./base/suites.yml"
- "./base/modifiers.yml"
includes the suites.yml and modifiers.yml files located at ./base
respectively.
Any environment variable in the paths are also resolved before any further processing.
This include a special environment variable $RUNNING_NG_PACKAGE_DATA that allows
you to refer to various configuration files shipping with running-ng, regardless how you installed running-ng.
For example, in a global pip installation, $RUNNING_NG_PACKAGE_DATA will look like /usr/local/lib/python3.10/dist-packages/running/config.
overrides
Under construction 🚧.
modifiers
A YAML dictionary of program arguments or environment variables that are to be
used with config strings. Cannot use - in the key for a modifier.
Each modifier requires a type key with other keys being specific to that
type. For more information regarding the different types of modifiers,
please refer to this page.
Warning preview feature ⚠️. We can exclude certain benchmarks from using a
specific modifier by using an excludes key along with a YAML list of benchmarks
to be excluded from each benchmark suite.
For example:
modifiers:
s:
type: JVMArg
val: "-server"
c2:
type: JVMArg
val: "-XX:-TieredCompilation -Xcomp"
excludes:
dacapo2006:
- eclipse
specifies two modifiers, s and c2, both of type
JVMArg with their respective values. Here, the
eclipse benchmark from the dacapo2006 benchmark suite has been excluded from
the c2 modifier.
Warning preview feature ⚠️. Similarly, we can attach the modifier only to
specific benchmarks by using an includes key.
For example:
modifiers:
c2:
type: JVMArg
val: "-XX:-TieredCompilation -Xcomp"
includes:
dacapo2006:
- eclipse
The c2 modifier will only be attached when running the eclipse benchmark
from the dacapo2006 benchmark suite.
excludes has a higher priority than includes.
For example:
modifiers:
c2:
type: JVMArg
val: "-XX:-TieredCompilation -Xcomp"
includes:
dacapo2006:
- eclipse
- fop
excludes:
dacapo2006:
- fop
The c2 modifier will only be attached when running the eclipse benchmark
from the dacapo2006 benchmark suite, no other benchmark will run with this
modifier (not even fop even though it appears in the includes).
Value Options
These are special modifiers whose values can be specified through their use in a
configuration string. Concrete values are specified as - separated
values after the modifier's name in a configuration string. These values will be
indexed by the modifier through syntax similar to Python format strings.
This is best understood via an example:
modifiers:
env_var:
type: EnvVar
var: "FOO{0}"
val: "{1}"
[...]
configs:
- "openjdk11|env_var-42-43"
specifies to run the openjdk11 runtime with the environment
variable FOO42 set to 43. Note that value options are not limited only to
environment variables, and can be used for all modifier types.
runtimes
A YAML dictionary of runtime definitions that are to be used with config strings.
Each runtime requires a type key with other keys being specific to that
type. For more information regarding the different types of runtimes,
please refer to this page.
suites
A YAML dictionary of benchmark suite definitions that are to be used as keys of benchmarks.
Each benchmark suite requires a type key with other keys being specific to that
type. For more information regarding the different types of benchmark suites,
please refer to this page.