The sandmark-nightly-config
repository consists of the custom
configuration files used to run
sandmark-nightly
scripts. The custom JSON files are present in the config/
folder,
one per machine. Both the sequential
and parallel
Sandmark
benchmarks are built and executed, by default, for each entry.
The config
folder includes two JSON files, custom_navajo.json
and
custom_turing.json
, for running the benchmarks on the Navajo and Turing
servers respectively (see sandmark.tarides.com for more details about these
machines).
You are encouraged to create a PR for your compiler development branch to be executed nightly on both the server machines. The following three URLs are supported:
-
Branch
: A compiler development branch whose changes need to be compared nightly. -
Commit
: A specific SHA1 commit on which the benchmarks should be executed. -
Pull Request
: An open pull request to check for performance regressions.
A sample custom JSON file illustrating the above three URLs is given below:
[
{
"url": "https://github.com/ocaml/ocaml/archive/trunk.tar.gz",
"name": "5.00+trunk",
"expiry": "2100-01-01"
},
{
"url": "https://github.com/ocaml/ocaml/archive/b73cbbea4bc40ffd26a459d594a39b99cec4273d.zip",
"name": "5.00+stable+b73cbb",
"expiry": "2100-01-01"
},
{
"url": "https://github.com/sadiqj/ocaml/archive/refs/heads/eventring-pr.zip",
"name": "5.00+trunk+sadiqj+pr10964",
"expiry": "2022-02-25"
}
]
The following attributes are supported for specifying the custom variant build:
Name | Mandatory | Description | Example(s) |
---|---|---|---|
url | Yes | Specify trunk or commit or branch URL | * https://github.com/ocaml/ocaml/archive/trunk.tar.gz * https://github.com/ocaml/ocaml/archive/b73cbbea4bc40ffd26a459d594a39b99cec4273d.zip * https://github.com/sadiqj/ocaml/archive/refs/heads/eventring-pr.zip |
name | Yes | An OCaml variant name with developer name, branch or PR | * 5.0.0+trunk+sequential * 5.0.0+trunk+sadiqj+pr10964 * 5.0.0+trunk+parallel |
expiry | Yes | A date (YYYY-MM-DD) until which the nightly runs should be executed | 2022-02-25 |
configure | No | configure options used when building the compiler |
* "-q" |
runparams | No | runtime parameters used when building the compiler | * "v=0x400" |
environment | No | Environment variables passed when running the benchmarks | "OCAMLRUNPARAM='s=2M'" |
The nightly results can be viewed at https://sandmark.tarides.com
The turing
configuration runs on an Intel Xeon scalable processor
based on Skylake. It is recommended to apply the workaround to the JCC
erratum microcode update
(https://www.intel.com/content/dam/support/us/en/documents/processors/mitigations-jump-conditional-code-erratum.pdf).
To do so, add a line
"configure": "CC='gcc -Wa,-mbranches-within-32B' AS='as -mbranches-within-32B'",
(for gcc) or
"configure": "CC='clang -mbranches-within-32B-boundaries' AS='as -mbranches-within-32B'",
(for clang) to the configuration.