You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/deployment.md
+18-2Lines changed: 18 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,23 @@
1
-
# Benchmarking machine
2
-
The machine that actually executes the benchmarks is the `AX-42` server running on [Hetzner](https://www.hetzner.com/dedicated-rootserver/). It has the following configuration.
1
+
# Deployment
2
+
3
+
The machines that actually execute the benchmarks ("collectors") are dedicated machines running on [Hetzner](https://www.hetzner.com/dedicated-rootserver/). The [web server](http://perf.rust-lang.org/) runs on [ECS](https://github.com/rust-lang/infra-team/blob/HEAD/service-catalog/rustc-perf/README.md).
4
+
5
+
## Debugging
6
+
This section documents what to do in case benchmarking doesn't work or something is stuck. The status of the collectors can be found on the [status page](https://perf.rust-lang.org/status.html). In particular, it shows the last heartbeat of each collector. If that date is very old (>1 hour), then something bad has probably happened with the collector.
7
+
8
+
You can SSH into the machines directly and examine what is going on there. The currently active machines have the following domain names:
9
+
10
+
-`rustc-perf-one.infra.rust-lang.org`
11
+
-`rustc-perf-two.infra.rust-lang.org`
12
+
13
+
The benchmarking process runs as a systemd service called `collector`. You can start/stop/inspect it using the usual commands:
The user account under which the benchmarks execute is called `collector`, you can switch to it using `su` and examine the `/home/collector/rustc-perf` checkout, from where are the benchmarks executed.
3
18
4
19
## Hardware
20
+
- The collectors run on `AX-42` Hetzner server instances.
5
21
- 8-core AMD Ryzen 7 PRO 8700GE with HyperThreading (16 hardware threads total)
Copy file name to clipboardExpand all lines: docs/glossary.md
+19-6Lines changed: 19 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,6 +25,9 @@ The following is a glossary of domain specific terminology. Although benchmarks
25
25
-`incr-patched`: incremental compilation is used, with a full incremental cache and some code changes made.
26
26
***backend**: the codegen backend used for compiling Rust code.
27
27
-`llvm`: the default codegen backend
28
+
-`cranelift`: experimental backend designed for quicker non-optimized builds
29
+
***target**: compilation target for which the benchmark is compiled.
30
+
-`x86_64-unknown-linux-gnu`: the default x64 Linux target
28
31
***category**: a high-level group of benchmarks. Currently, there are three categories, primary (mostly real-world crates), secondary (mostly stress tests), and stable (old real-world crates, only used for the dashboard).
29
32
***artifact type**: describes what kind of artifact does the benchmark build. Either `library` or `binary`.
30
33
@@ -41,15 +44,15 @@ The following is a glossary of domain specific terminology. Although benchmarks
41
44
## Testing
42
45
43
46
***test case**: a combination of parameters that describe the measurement of a single (compile-time or runtime) benchmark - a single `test`
44
-
- For compile-time benchmarks, it is a combination of a benchmark, a profile, and a scenario.
45
-
- For runtime benchmarks, it is currently only the benchmark name.
47
+
- For compile-time benchmarks, it is a combination of a benchmark, a profile, a scenario, a codegen backend and a target.
48
+
- For runtime benchmarks, it a combination of a benchmark and a target.
46
49
***test**: the act of running an artifact under a test case. Each test is composed of many iterations.
47
50
***test iteration**: a single iteration that makes up a test. Note: we currently normally run 3 test iterations for each test.
48
-
***test result**: the result of the collection of all statistics from running a test. Currently, the minimum value of a statistic from all the test iterations is used for analysis calculations and the website.
49
-
***statistic**: a single measured value of a metric in a test result
51
+
***test result**: the set of all gathered statistics from running a test. Currently, the minimum value of a statistic from all the test iterations is used for analysis calculations and the website.
52
+
***statistic**: a single measured value of a metric in a test iteration
50
53
***statistic description**: the combination of a metric and a test case which describes a statistic.
51
54
***statistic series**: statistics for the same statistic description over time.
52
-
***run**: a set of tests for all currently available test cases measured on a given artifact.
55
+
***run**: a set of tests for all currently available test cases measured on a given artifact.
53
56
54
57
## Analysis
55
58
@@ -60,7 +63,17 @@ The following is a glossary of domain specific terminology. Although benchmarks
60
63
***relevant test result comparison**: a test result comparison can be significant but still not be relevant (i.e., worth paying attention to). Relevance is a factor of the test result comparison's significance and magnitude. Comparisons are considered relevant if they are significant and have at least a small magnitude .
61
64
***test result comparison magnitude**: how "large" the delta is between the two test result's under comparison. This is determined by the average of two factors: the absolute size of the change (i.e., a change of 5% is larger than a change of 1%) and the amount above the significance threshold (i.e., a change that is 5x the significance threshold is larger than a change 1.5x the significance threshold).
62
65
63
-
## Other
66
+
## Job queue
67
+
68
+
These terms are related to the [job queue system](./job-queue.md) that distributes benchmarking jobs across available collectors.
69
+
70
+
-**benchmark request**: a request for a benchmarking a *run* on a given *artifact*. Can be either created from a try build on a PR, or it is automatically created from merged master/release *artifacts*.
71
+
-**collector**: a machine that performs benchmarks.
72
+
-**benchmark set**: a subset of a compile/runtime/bootstrap benchmark suite that is executed by a collector in a single job.
73
+
-**job**: a high-level "work item" that defines a set of *test cases* that should be benchmarked on a specific collector.
74
+
-**job queue**: a queue of *jobs*.
75
+
76
+
## Other
64
77
65
78
***bootstrap**: the process of building the compiler from a previous version of the compiler
66
79
***compiler query**: a query used inside the [compiler query system](https://rustc-dev-guide.rust-lang.org/overview.html#queries).
0 commit comments