diff --git a/commands/runbms.html b/commands/runbms.html index 0fb7aad..930c941 100644 --- a/commands/runbms.html +++ b/commands/runbms.html @@ -184,7 +184,7 @@
-s
: only use the specified heap sizes.
This is a comma-separated string of integers or floating point numbers.
For each slice s
in SLICE
, we run benchmarks at s * minheap
.
-N
and n
s are ignored.
N
and n
s are ignored.
-p
: add a prefix to the folder names where the results are stored.
By default, the folder that stores the result is named using the host name and the timestamp.
However, you can add a prefix to the folder name to signify which experiments the results belong to.
Zulip
request
: please follow the Zulip API documentation.
@@ -250,7 +250,7 @@
CopyFile
dacapo_latency:
type: CopyFile
patterns:
- - "scratch/dacapo-latency-*.csv"
+ - "scratch/dacapo-latency-*.csv"
patterns
: a list of patterns following the Python 3 pathlib.Path.glob
syntax.
diff --git a/cookbook/perf_events.html b/cookbook/perf_events.html
index 8860f0a..61b83ea 100644
--- a/cookbook/perf_events.html
+++ b/cookbook/perf_events.html
@@ -185,15 +185,15 @@
modifiers:
jvmti_env:
type: EnvVar
- var: "LD_PRELOAD"
- val: "/path/to/distillation/libperf_statistics.so"
+ var: "LD_PRELOAD"
+ val: "/path/to/distillation/libperf_statistics.so"
Second, you need to specify a list of events you want to measure.
modifiers:
perf:
type: EnvVar
- var: "PERF_EVENTS"
- val: "PERF_COUNT_HW_CPU_CYCLES,PERF_COUNT_HW_INSTRUCTIONS,PERF_COUNT_HW_CACHE_LL:MISS,PERF_COUNT_HW_CACHE_L1D:MISS,PERF_COUNT_HW_CACHE_DTLB:MISS"
+ var: "PERF_EVENTS"
+ val: "PERF_COUNT_HW_CPU_CYCLES,PERF_COUNT_HW_INSTRUCTIONS,PERF_COUNT_HW_CACHE_LL:MISS,PERF_COUNT_HW_CACHE_L1D:MISS,PERF_COUNT_HW_CACHE_DTLB:MISS"
If you want to get a full list of events you can use on a particular machine, you can clone and build libpfm4
and run the showevtinfo
program.
Third, you need to tell the JVM to load the agent. @@ -201,23 +201,23 @@
modifiers:
jvmti:
type: JVMArg
- val: "-agentpath:/path/to/distillation/libperf_statistics.so"
+ val: "-agentpath:/path/to/distillation/libperf_statistics.so"
Finally, you need to let the DaCapo benchmark inform the start and the end of a benchmark iteration.
We will reuse the RustMMTk
probe here, as the callback functions in the JVMTI agent are also called harness_begin
and harness_end
.
modifiers:
probes_cp:
type: JVMClasspath
- val: "/path/to/probes/out /path/to/probes/out/probes.jar"
+ val: "/path/to/probes/out /path/to/probes/out/probes.jar"
probes:
type: JVMArg
- val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
+ val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
Now, putting it all together, you can define a set of modifiers, and use that set in your config strings.
modifiers:
jvmti_common:
type: ModifierSet
- val: "probes|probes_cp|jvmti|jvmti_env|perf"
+ val: "probes|probes_cp|jvmti|jvmti_env|perf"
Please clone and build probes
.
@@ -226,17 +226,17 @@
modifiers:
probes_cp:
type: JVMClasspath
- val: "/path/to/probes/out /path/to/probes/out/probes.jar"
+ val: "/path/to/probes/out /path/to/probes/out/probes.jar"
probes:
type: JVMArg
- val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
+ val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
Then, you can specify a list of events you want to measure.
modifiers:
mmtk_perf:
type: EnvVar
- var: "MMTK_PHASE_PERF_EVENTS"
- val: "PERF_COUNT_HW_CPU_CYCLES,0,-1;PERF_COUNT_HW_INSTRUCTIONS,0,-1;PERF_COUNT_HW_CACHE_LL:MISS,0,-1;PERF_COUNT_HW_CACHE_L1D:MISS,0,-1;PERF_COUNT_HW_CACHE_DTLB:MISS,0,-1"
+ var: "MMTK_PHASE_PERF_EVENTS"
+ val: "PERF_COUNT_HW_CPU_CYCLES,0,-1;PERF_COUNT_HW_INSTRUCTIONS,0,-1;PERF_COUNT_HW_CACHE_LL:MISS,0,-1;PERF_COUNT_HW_CACHE_L1D:MISS,0,-1;PERF_COUNT_HW_CACHE_DTLB:MISS,0,-1"
Note that the list is semicolon-separated. Each entry consists of three parts, separated by commas. diff --git a/index.html b/index.html index 48e868a..52a731f 100644 --- a/index.html +++ b/index.html @@ -178,7 +178,7 @@
At this stage, the focus of this project is driven by the internal use of members from Steve Blackburn's lab. If you are a member of the lab, you know what to do if you encounter any issue, and you can ignore the below.
-If you are a member of the public, please kindly note that the project is open-source and documented on a "good-faith" basis. +
If you are a member of the public, please kindly note that the project is open-source and documented on a "good-faith" basis. We might not have the time to consider your features requests. Please don't be offended if we ignore these. Having said that, you are very welcomed to use it, and we will be very pleased if this helps anyone. diff --git a/intro.html b/intro.html index 48e868a..52a731f 100644 --- a/intro.html +++ b/intro.html @@ -178,7 +178,7 @@
At this stage, the focus of this project is driven by the internal use of members from Steve Blackburn's lab. If you are a member of the lab, you know what to do if you encounter any issue, and you can ignore the below.
-If you are a member of the public, please kindly note that the project is open-source and documented on a "good-faith" basis. +
If you are a member of the public, please kindly note that the project is open-source and documented on a "good-faith" basis. We might not have the time to consider your features requests. Please don't be offended if we ignore these. Having said that, you are very welcomed to use it, and we will be very pleased if this helps anyone. diff --git a/print.html b/print.html index 1476da5..9c6cc0e 100644 --- a/print.html +++ b/print.html @@ -179,7 +179,7 @@
At this stage, the focus of this project is driven by the internal use of members from Steve Blackburn's lab. If you are a member of the lab, you know what to do if you encounter any issue, and you can ignore the below.
-If you are a member of the public, please kindly note that the project is open-source and documented on a "good-faith" basis. +
If you are a member of the public, please kindly note that the project is open-source and documented on a "good-faith" basis. We might not have the time to consider your features requests. Please don't be offended if we ignore these. Having said that, you are very welcomed to use it, and we will be very pleased if this helps anyone. @@ -240,7 +240,7 @@
Then, create a file two_builds.yml
with the following content.
includes:
- - "$RUNNING_NG_PACKAGE_DATA/base/runbms.yml"
+ - "$RUNNING_NG_PACKAGE_DATA/base/runbms.yml"
The YAML file represents a dictionary (key-value pairs) that defines the experiments you are running.
The includes
directive here will populate the dictionary with some default values shipped with running-ng
.
$RUNNING_NG_PACKAGE_DATA/base/dacapo.yml
.
By default, the minimum heap sizes of dacapochopin-29a657f
benchmarks are measured with AdoptOpenJDK 15 using G1 GC.
If you are using OpenJDK 11 or 17, you can override the value of suites.dacapochopin-29a657f.minheap
to temurin-17-G1
or temurin-11-G1
.
-That is, you can, for example, add "suites.dacapochopin-29a657f.minheap": "temurin-17-G1"
to overrides
.
+That is, you can, for example, add "suites.dacapochopin-29a657f.minheap": "temurin-17-G1"
to overrides
.
Then, add the following to two_builds.yml
.
overrides:
- "suites.dacapochopin-29a657f.timing_iteration": 5
- "suites.dacapochopin-29a657f.callback": "probe.DacapoChopinCallback"
+ "suites.dacapochopin-29a657f.timing_iteration": 5
+ "suites.dacapochopin-29a657f.callback": "probe.DacapoChopinCallback"
That is, we want to run five iterations for each invocation, and use DacapoChopinCallback
because it is the appropriate callback for this release of DaCapo.
This defines two builds of runtimes.
I recommend that you use absolute paths for the builds, although relative paths will work, and will be relative to where you run running
.
modifiers:
probes_cp:
type: JVMClasspath
- val: "/path/to/probes/out /path/to/probes/out/probes.jar"
+ val: "/path/to/probes/out /path/to/probes/out/probes.jar"
probes:
type: JVMArg
- val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
+ val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
This defines two modifiers, which will be used later to modify the JVM command line arguments.
Please only use absolute paths for all the above.
Finally, add he following to two_builds.yml
.
configs:
- - "build1|ms|s|c2|mmtk_gc-SemiSpace|tph|probes_cp|probes"
- - "build2|ms|s|c2|mmtk_gc-SemiSpace|tph|probes_cp|probes"
+ - "build1|ms|s|c2|mmtk_gc-SemiSpace|tph|probes_cp|probes"
+ - "build2|ms|s|c2|mmtk_gc-SemiSpace|tph|probes_cp|probes"
The syntax is described here.
This allows you to see any issue before wasting several days only realizing that something didn't work.
Once you are happy with everything, run the experiments.
-running runbms /path/to/log two_builds.yml 8 -p "two_builds"
+running runbms /path/to/log two_builds.yml 8 -p "two_builds"
Don't forget to give the results folder a prefix so that you can later tell what the experiment was for.
Analysing Results
@@ -399,11 +399,11 @@ benchmarks
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>"
.
+modifiers, i.e. "<runtime>|<modifier>|...|<modifier>"
.
For example:
configs:
- - "openjdk11|ms|s|c2"
- - "openjdk15|ms|s"
+ - "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
@@ -414,8 +414,8 @@
configs
so that it's easier for multi-line editing.
For example:
configs:
- - "openjdk8 |foo-1 |bar|buzz"
- - "openjdk15|foo-16| |buzz"
+ - "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
@@ -430,8 +430,8 @@
includes
line is interpreted as $HOME/bar.yml
.
Similarly,
includes:
- - "./base/suites.yml"
- - "./base/modifiers.yml"
+ - "./base/suites.yml"
+ - "./base/modifiers.yml"
includes the suites.yml
and modifiers.yml
files located at ./base
respectively.
@@ -454,10 +454,10 @@ modifiers
modifiers:
s:
type: JVMArg
- val: "-server"
+ val: "-server"
c2:
type: JVMArg
- val: "-XX:-TieredCompilation -Xcomp"
+ val: "-XX:-TieredCompilation -Xcomp"
excludes:
dacapo2006:
- eclipse
@@ -472,7 +472,7 @@ modifiers
modifiers:
c2:
type: JVMArg
- val: "-XX:-TieredCompilation -Xcomp"
+ val: "-XX:-TieredCompilation -Xcomp"
includes:
dacapo2006:
- eclipse
@@ -484,7 +484,7 @@ modifiers
modifiers:
c2:
type: JVMArg
- val: "-XX:-TieredCompilation -Xcomp"
+ val: "-XX:-TieredCompilation -Xcomp"
includes:
dacapo2006:
- eclipse
@@ -505,13 +505,13 @@ Value Options
modifiers:
env_var:
type: EnvVar
- var: "FOO{0}"
- val: "{1}"
+ var: "FOO{0}"
+ val: "{1}"
[...]
configs:
- - "openjdk11|env_var-42-43"
+ - "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
@@ -535,10 +535,10 @@
Keys
programs:
<BM_NAME_1>:
path: /full/path/to/benchmark/binary_1
- args: "Any arguments to binary_1"
+ args: "Any arguments to binary_1"
<BM_NAME_2>:
path: /full/path/to/benchmark/binary_2
- args: "Any arguments to binary_2"
+ args: "Any arguments to binary_2"
[...]
A possible use-case could use wrapper shell scripts around the benchmark to
@@ -546,7 +546,7 @@
Keys
DaCapo
Keys
-release
: one of the possible values ["2006", "9.12", "evaluation"]
.
+
release
: one of the possible values ["2006", "9.12", "evaluation"]
.
The value is required.
path
: path to the DaCapo jar
.
The value is required.
@@ -588,19 +588,19 @@
Keys
Therefore, companion programs should have appropriate timeouts or detect when main program finishes.
Here is an example of using companion
to launch bpftrace
in the background to count the system calls.
includes:
- - "$RUNNING_NG_PACKAGE_DATA/base/runbms.yml"
+ - "$RUNNING_NG_PACKAGE_DATA/base/runbms.yml"
overrides:
- "suites.dacapo2006.timing_iteration": 1
- "suites.dacapo2006.companion": "sudo bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @syscall[args->id] = count(); @process[comm] = count();} interval:s:10 { printf(\"Goodbye world!\\n\"); exit(); }'"
- "invocations": 1
+ "suites.dacapo2006.timing_iteration": 1
+ "suites.dacapo2006.companion": "sudo bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @syscall[args->id] = count(); @process[comm] = count();} interval:s:10 { printf(\"Goodbye world!\\n\"); exit(); }'"
+ "invocations": 1
benchmarks:
dacapo2006:
- fop
configs:
- - "temurin-17"
+ - "temurin-17"
In the log file, the output from the main program and the output from the companion program is separated by *****
.
size
: specifying the size of input data.
@@ -621,7 +621,7 @@
SPECjbb2015
(preview ⚠️)
Keys
-release
: one of the possible values ["1.03"]
.
+
release
: one of the possible values ["1.03"]
.
The value is required.
path
: path to the jar
.
The value is required.
@@ -629,28 +629,28 @@
Keys
Environment variables will be expanded.
Benchmark Specification
Only strings are allowed, which should correspond to the the mode of the SPECjbb2015 controller.
-Right now, only "composite"
is supported.
+Right now, only "composite"
is supported.
SPECjvm98
(preview ⚠️)
Note that you will need to prepend probes to the classpaths, so that the modified SpecApplication
can be used.
Here is an example configuration file.
includes:
- - "/home/zixianc/running-ng/src/running/config/base/runbms.yml"
+ - "/home/zixianc/running-ng/src/running/config/base/runbms.yml"
modifiers:
probes_cp:
type: JVMClasspathPrepend
- val: "/home/zixianc/MMTk-Dev/evaluation/probes /home/zixianc/MMTk-Dev/evaluation/probes/probes.jar"
+ val: "/home/zixianc/MMTk-Dev/evaluation/probes /home/zixianc/MMTk-Dev/evaluation/probes/probes.jar"
benchmarks:
specjvm98:
- _213_javac
configs:
- - "adoptopenjdk-8|probes_cp"
+ - "adoptopenjdk-8|probes_cp"
Keys
-release
: one of the possible values ["1.03_05"]
.
+
release
: one of the possible values ["1.03_05"]
.
The value is required.
path
: path to the SPECjvm98 folder, where you can find SpecApplication.class
.
The value is required.
@@ -848,7 +848,7 @@
Usage
-s
: only use the specified heap sizes.
This is a comma-separated string of integers or floating point numbers.
For each slice s
in SLICE
, we run benchmarks at s * minheap
.
-N
and n
s are ignored.
+N
and n
s are ignored.
-p
: add a prefix to the folder names where the results are stored.
By default, the folder that stores the result is named using the host name and the timestamp.
However, you can add a prefix to the folder name to signify which experiments the results belong to.
@@ -894,7 +894,7 @@ Zulip
type: Zulip
request:
type: private
- to: ["your user id here"]
+ to: ["your user id here"]
request
: please follow the Zulip API documentation.
@@ -914,7 +914,7 @@
CopyFile
dacapo_latency:
type: CopyFile
patterns:
- - "scratch/dacapo-latency-*.csv"
+ - "scratch/dacapo-latency-*.csv"
patterns
: a list of patterns following the Python 3 pathlib.Path.glob
syntax.
@@ -1009,15 +1009,15 @@
modifiers:
jvmti_env:
type: EnvVar
- var: "LD_PRELOAD"
- val: "/path/to/distillation/libperf_statistics.so"
+ var: "LD_PRELOAD"
+ val: "/path/to/distillation/libperf_statistics.so"
Second, you need to specify a list of events you want to measure.
modifiers:
perf:
type: EnvVar
- var: "PERF_EVENTS"
- val: "PERF_COUNT_HW_CPU_CYCLES,PERF_COUNT_HW_INSTRUCTIONS,PERF_COUNT_HW_CACHE_LL:MISS,PERF_COUNT_HW_CACHE_L1D:MISS,PERF_COUNT_HW_CACHE_DTLB:MISS"
+ var: "PERF_EVENTS"
+ val: "PERF_COUNT_HW_CPU_CYCLES,PERF_COUNT_HW_INSTRUCTIONS,PERF_COUNT_HW_CACHE_LL:MISS,PERF_COUNT_HW_CACHE_L1D:MISS,PERF_COUNT_HW_CACHE_DTLB:MISS"
If you want to get a full list of events you can use on a particular machine, you can clone and build libpfm4
and run the showevtinfo
program.
Third, you need to tell the JVM to load the agent. @@ -1025,23 +1025,23 @@
modifiers:
jvmti:
type: JVMArg
- val: "-agentpath:/path/to/distillation/libperf_statistics.so"
+ val: "-agentpath:/path/to/distillation/libperf_statistics.so"
Finally, you need to let the DaCapo benchmark inform the start and the end of a benchmark iteration.
We will reuse the RustMMTk
probe here, as the callback functions in the JVMTI agent are also called harness_begin
and harness_end
.
modifiers:
probes_cp:
type: JVMClasspath
- val: "/path/to/probes/out /path/to/probes/out/probes.jar"
+ val: "/path/to/probes/out /path/to/probes/out/probes.jar"
probes:
type: JVMArg
- val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
+ val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
Now, putting it all together, you can define a set of modifiers, and use that set in your config strings.
modifiers:
jvmti_common:
type: ModifierSet
- val: "probes|probes_cp|jvmti|jvmti_env|perf"
+ val: "probes|probes_cp|jvmti|jvmti_env|perf"
Please clone and build probes
.
@@ -1050,17 +1050,17 @@
modifiers:
probes_cp:
type: JVMClasspath
- val: "/path/to/probes/out /path/to/probes/out/probes.jar"
+ val: "/path/to/probes/out /path/to/probes/out/probes.jar"
probes:
type: JVMArg
- val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
+ val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
Then, you can specify a list of events you want to measure.
modifiers:
mmtk_perf:
type: EnvVar
- var: "MMTK_PHASE_PERF_EVENTS"
- val: "PERF_COUNT_HW_CPU_CYCLES,0,-1;PERF_COUNT_HW_INSTRUCTIONS,0,-1;PERF_COUNT_HW_CACHE_LL:MISS,0,-1;PERF_COUNT_HW_CACHE_L1D:MISS,0,-1;PERF_COUNT_HW_CACHE_DTLB:MISS,0,-1"
+ var: "MMTK_PHASE_PERF_EVENTS"
+ val: "PERF_COUNT_HW_CPU_CYCLES,0,-1;PERF_COUNT_HW_INSTRUCTIONS,0,-1;PERF_COUNT_HW_CACHE_LL:MISS,0,-1;PERF_COUNT_HW_CACHE_L1D:MISS,0,-1;PERF_COUNT_HW_CACHE_DTLB:MISS,0,-1"
Note that the list is semicolon-separated. Each entry consists of three parts, separated by commas. diff --git a/quickstart.html b/quickstart.html index 873f48b..30b0a4c 100644 --- a/quickstart.html +++ b/quickstart.html @@ -181,7 +181,7 @@
Then, create a file two_builds.yml
with the following content.
includes:
- - "$RUNNING_NG_PACKAGE_DATA/base/runbms.yml"
+ - "$RUNNING_NG_PACKAGE_DATA/base/runbms.yml"
The YAML file represents a dictionary (key-value pairs) that defines the experiments you are running.
The includes
directive here will populate the dictionary with some default values shipped with running-ng
.
$RUNNING_NG_PACKAGE_DATA/base/dacapo.yml
.
By default, the minimum heap sizes of dacapochopin-29a657f
benchmarks are measured with AdoptOpenJDK 15 using G1 GC.
If you are using OpenJDK 11 or 17, you can override the value of suites.dacapochopin-29a657f.minheap
to temurin-17-G1
or temurin-11-G1
.
-That is, you can, for example, add "suites.dacapochopin-29a657f.minheap": "temurin-17-G1"
to overrides
.
+That is, you can, for example, add "suites.dacapochopin-29a657f.minheap": "temurin-17-G1"
to overrides
.
Then, add the following to two_builds.yml
.
overrides:
- "suites.dacapochopin-29a657f.timing_iteration": 5
- "suites.dacapochopin-29a657f.callback": "probe.DacapoChopinCallback"
+ "suites.dacapochopin-29a657f.timing_iteration": 5
+ "suites.dacapochopin-29a657f.callback": "probe.DacapoChopinCallback"
That is, we want to run five iterations for each invocation, and use DacapoChopinCallback
because it is the appropriate callback for this release of DaCapo.
This defines two builds of runtimes.
I recommend that you use absolute paths for the builds, although relative paths will work, and will be relative to where you run running
.
modifiers:
probes_cp:
type: JVMClasspath
- val: "/path/to/probes/out /path/to/probes/out/probes.jar"
+ val: "/path/to/probes/out /path/to/probes/out/probes.jar"
probes:
type: JVMArg
- val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
+ val: "-Djava.library.path=/path/to/probes/out -Dprobes=RustMMTk"
This defines two modifiers, which will be used later to modify the JVM command line arguments.
Please only use absolute paths for all the above.
Finally, add he following to two_builds.yml
.
configs:
- - "build1|ms|s|c2|mmtk_gc-SemiSpace|tph|probes_cp|probes"
- - "build2|ms|s|c2|mmtk_gc-SemiSpace|tph|probes_cp|probes"
+ - "build1|ms|s|c2|mmtk_gc-SemiSpace|tph|probes_cp|probes"
+ - "build2|ms|s|c2|mmtk_gc-SemiSpace|tph|probes_cp|probes"
The syntax is described here.
This allows you to see any issue before wasting several days only realizing that something didn't work.
Once you are happy with everything, run the experiments.
-running runbms /path/to/log two_builds.yml 8 -p "two_builds"
+running runbms /path/to/log two_builds.yml 8 -p "two_builds"
Don't forget to give the results folder a prefix so that you can later tell what the experiment was for.
Analysing Results
diff --git a/references/index.html b/references/index.html
index ae8fadd..dc54975 100644
--- a/references/index.html
+++ b/references/index.html
@@ -206,11 +206,11 @@ benchmarks
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>"
.
+modifiers, i.e. "<runtime>|<modifier>|...|<modifier>"
.
For example:
configs:
- - "openjdk11|ms|s|c2"
- - "openjdk15|ms|s"
+ - "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
@@ -221,8 +221,8 @@
configs
so that it's easier for multi-line editing.
For example:
configs:
- - "openjdk8 |foo-1 |bar|buzz"
- - "openjdk15|foo-16| |buzz"
+ - "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
@@ -237,8 +237,8 @@
includes
line is interpreted as $HOME/bar.yml
.
Similarly,
includes:
- - "./base/suites.yml"
- - "./base/modifiers.yml"
+ - "./base/suites.yml"
+ - "./base/modifiers.yml"
includes the suites.yml
and modifiers.yml
files located at ./base
respectively.
@@ -261,10 +261,10 @@ modifiers
modifiers:
s:
type: JVMArg
- val: "-server"
+ val: "-server"
c2:
type: JVMArg
- val: "-XX:-TieredCompilation -Xcomp"
+ val: "-XX:-TieredCompilation -Xcomp"
excludes:
dacapo2006:
- eclipse
@@ -279,7 +279,7 @@ modifiers
modifiers:
c2:
type: JVMArg
- val: "-XX:-TieredCompilation -Xcomp"
+ val: "-XX:-TieredCompilation -Xcomp"
includes:
dacapo2006:
- eclipse
@@ -291,7 +291,7 @@ modifiers
modifiers:
c2:
type: JVMArg
- val: "-XX:-TieredCompilation -Xcomp"
+ val: "-XX:-TieredCompilation -Xcomp"
includes:
dacapo2006:
- eclipse
@@ -312,13 +312,13 @@ Value Options
modifiers:
env_var:
type: EnvVar
- var: "FOO{0}"
- val: "{1}"
+ var: "FOO{0}"
+ val: "{1}"
[...]
configs:
- - "openjdk11|env_var-42-43"
+ - "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
diff --git a/references/suite.html b/references/suite.html
index dfae6a8..c7220bb 100644
--- a/references/suite.html
+++ b/references/suite.html
@@ -182,10 +182,10 @@
Keys
programs:
<BM_NAME_1>:
path: /full/path/to/benchmark/binary_1
- args: "Any arguments to binary_1"
+ args: "Any arguments to binary_1"
<BM_NAME_2>:
path: /full/path/to/benchmark/binary_2
- args: "Any arguments to binary_2"
+ args: "Any arguments to binary_2"
[...]
A possible use-case could use wrapper shell scripts around the benchmark to
@@ -193,7 +193,7 @@
Keys
DaCapo
Keys
-release
: one of the possible values ["2006", "9.12", "evaluation"]
.
+
release
: one of the possible values ["2006", "9.12", "evaluation"]
.
The value is required.
path
: path to the DaCapo jar
.
The value is required.
@@ -235,19 +235,19 @@
Keys
Therefore, companion programs should have appropriate timeouts or detect when main program finishes.
Here is an example of using companion
to launch bpftrace
in the background to count the system calls.
includes:
- - "$RUNNING_NG_PACKAGE_DATA/base/runbms.yml"
+ - "$RUNNING_NG_PACKAGE_DATA/base/runbms.yml"
overrides:
- "suites.dacapo2006.timing_iteration": 1
- "suites.dacapo2006.companion": "sudo bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @syscall[args->id] = count(); @process[comm] = count();} interval:s:10 { printf(\"Goodbye world!\\n\"); exit(); }'"
- "invocations": 1
+ "suites.dacapo2006.timing_iteration": 1
+ "suites.dacapo2006.companion": "sudo bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @syscall[args->id] = count(); @process[comm] = count();} interval:s:10 { printf(\"Goodbye world!\\n\"); exit(); }'"
+ "invocations": 1
benchmarks:
dacapo2006:
- fop
configs:
- - "temurin-17"
+ - "temurin-17"
In the log file, the output from the main program and the output from the companion program is separated by *****
.
size
: specifying the size of input data.
@@ -268,7 +268,7 @@
SPECjbb2015
(preview ⚠️)
Keys
-release
: one of the possible values ["1.03"]
.
+
release
: one of the possible values ["1.03"]
.
The value is required.
path
: path to the jar
.
The value is required.
@@ -276,28 +276,28 @@
Keys
Environment variables will be expanded.
Benchmark Specification
Only strings are allowed, which should correspond to the the mode of the SPECjbb2015 controller.
-Right now, only "composite"
is supported.
+Right now, only "composite"
is supported.
SPECjvm98
(preview ⚠️)
Note that you will need to prepend probes to the classpaths, so that the modified SpecApplication
can be used.
Here is an example configuration file.
includes:
- - "/home/zixianc/running-ng/src/running/config/base/runbms.yml"
+ - "/home/zixianc/running-ng/src/running/config/base/runbms.yml"
modifiers:
probes_cp:
type: JVMClasspathPrepend
- val: "/home/zixianc/MMTk-Dev/evaluation/probes /home/zixianc/MMTk-Dev/evaluation/probes/probes.jar"
+ val: "/home/zixianc/MMTk-Dev/evaluation/probes /home/zixianc/MMTk-Dev/evaluation/probes/probes.jar"
benchmarks:
specjvm98:
- _213_javac
configs:
- - "adoptopenjdk-8|probes_cp"
+ - "adoptopenjdk-8|probes_cp"
Keys
-release
: one of the possible values ["1.03_05"]
.
+
release
: one of the possible values ["1.03_05"]
.
The value is required.
path
: path to the SPECjvm98 folder, where you can find SpecApplication.class
.
The value is required.
diff --git a/searcher.js b/searcher.js
index d2b0aee..dc03e0a 100644
--- a/searcher.js
+++ b/searcher.js
@@ -316,7 +316,7 @@ window.search = window.search || {};
// Eventhandler for keyevents on `document`
function globalKeyHandler(e) {
- if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey || e.target.type === 'textarea' || e.target.type === 'text') { return; }
+ if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey || e.target.type === 'textarea' || e.target.type === 'text' || !hasFocus() && /^(?:input|select|textarea)$/i.test(e.target.nodeName)) { return; }
if (e.keyCode === ESCAPE_KEYCODE) {
e.preventDefault();