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: content/install-guides/dcperf.md
+81-24Lines changed: 81 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,33 +21,55 @@ weight: 1
21
21
22
22
## Introduction
23
23
24
-
DCPerf is an opensource benchmarking and microbenchmarking suite, originally developed by Meta, that faithfully replicates the characteristics of various generalpurpose data center workloads. One of the key differentiators to alternate benchmarking software is the fidelity of micro-architectural behaviour replicated by DCPerf, for example, cache misses, branch misprediction rate etc.
24
+
DCPerf is an open-source benchmarking and microbenchmarking suite originally developed by Meta. It faithfully replicates the characteristics of general-purpose data center workloads, with particular attention to microarchitectural fidelity. DCPerf stands out for accurate simulation of behaviors such as cache misses and branch mispredictions, which are details that many other benchmarking tools overlook.
25
25
26
-
The use cases of running DCPerf are to generate performance data to inform procurement decision and regression testing for changes in environment, such as kernel and compiler changes. This installation guide is to install DCPerf on Arm-based servers. This example has been tested on a AWS `c7g.metal` instance running Ubuntu 22.04 LTS.
26
+
You can use DCPerf to generate performance data to inform procurement decisions, and for regression testing to detect changes in the environment, such as kernel and compiler changes.
27
27
28
-
Please Note: When running on a server provided by a cloud service provided, you will have limit access to change parameters such as BIOS settings which can impact performance.
28
+
DCPerf runs on Arm-based servers. The examples below have been tested on an AWS `c7g.metal` instance running Ubuntu 22.04 LTS.
29
29
30
-
## Install Prerequisites
30
+
{{% notice Note %}}
31
+
When running on a server provided by a cloud service, you have limited access to some parameters, such as UEFI settings, which can affect performance.
DCPerf offers many benchmarks. See the official documentation for the benchmark of your choice.
49
69
50
-
DCPerf offers many benchmarks, please refer the official documentation for the benchmark of your choice. In this example we will run the MediaWiki benchmark. The MediaWiki benchmark is designed to faithfully reproduce the workload of the facebook social networking site. First install the dependency.
70
+
One example is the MediaWiki benchmark, designed to faithfully reproduce the workload of the Facebook social networking site.
71
+
72
+
Install HipHop Virtual Machine (HHVM), a virtual machine used to execute the web application code:
Confirm security-enhanced Linux (SELinux) is disabled with the following commands.
98
+
Confirm security-enhanced Linux (SELinux) is disabled with the following commands:
75
99
76
100
```bash
77
101
sudo apt install selinux-utils
78
102
getenforce
79
103
```
80
104
81
-
You should see the following response. If you do not see the `Disabled` output. Please refer to your distributions documentation on how to disable before proceeding.
105
+
You should see the following response:
82
106
83
107
```output
84
108
Disabled
85
109
```
86
110
111
+
If you do not see the `Disabled` output, see your Linux distribution documentation for information about how to disable SELinux.
87
112
88
-
The `install` argument to the `benchpress_cli.py` commandline script can be used to automatially install all dependencies for each benchmark.
113
+
You can automatically install all dependencies for each benchmark using the `install` argument with the `benchpress_cli.py` command-line script:
Please note this can take several minutes to do all the required steps.
95
-
119
+
This step might take several minutes to complete, depending on your system's download and setup speed.
96
120
97
-
## Run the MediaWiki Benchmark
121
+
## Run the MediaWiki benchmark
98
122
99
-
For sake of brevity we will pass in duration and timeout arguments through a `JSON` dictionary with the `-i` argument.
123
+
For the sake of brevity, you can provide the duration and timeout arguments using a `JSON` dictionary with the `-i` argument:
100
124
101
-
```bash
125
+
```console
102
126
sudo ./benchpress_cli.py run oss_performance_mediawiki_mlp -i '{
103
127
"duration": "30s",
104
128
"timeout": "1m"
105
129
}'
106
130
```
107
131
108
-
Whilst the benchmark is running you will be able to observe the various processes occupying the CPU with the `top` command.
132
+
While the benchmark is running, you can monitor CPU activity and observe benchmark-related processes using the `top` command.
109
133
134
+
When the benchmark is complete, a `benchmark_metrics_*` directory is created within the `DCPerf` directory, containing a `JSON` file for the system specs and another for the metrics.
110
135
111
-
Once the benchmark is complete, within the `DCPerf` directory a `benchmark_metrics_*` directory will be created with a `JSON` file for the system specs and metrics respectively.
112
-
For example, the metrics file will list the
136
+
For example, the metrics file lists the following:
113
137
114
138
```output
115
139
"metrics": {
@@ -133,3 +157,36 @@ For example, the metrics file will list the
133
157
},
134
158
"score": 2.4692578125
135
159
```
160
+
161
+
## Understanding the benchmark results
162
+
163
+
The metrics file contains several key performance indicators from the benchmark run:
164
+
165
+
166
+
-**Nginx 200, 404, 499**: The number of HTTP responses with status codes 200 (success), 404 (not found), and 499 (client closed request) returned by the Nginx web server during the test.
167
+
-**Nginx P50/P90/P95/P99 time**: The response time percentiles (in seconds) for requests handled by Nginx. For example, P50 is the median response time, P99 is the time under which 99% of requests completed.
168
+
-**Nginx avg bytes**: The average number of bytes sent per response.
169
+
-**Nginx avg time**: The average response time for all requests.
170
+
-**Nginx hits**: The total number of requests handled by Nginx.
171
+
-**Wrk RPS**: The average number of requests per second (RPS) generated by the `wrk` load testing tool.
172
+
-**Wrk failed requests**: The number of requests that failed during the test.
173
+
-**Wrk requests**: The total number of requests sent by `wrk`.
174
+
-**Wrk successful requests**: The number of requests that completed successfully.
175
+
-**Wrk wall sec**: The total wall-clock time (in seconds) for the benchmark run.
176
+
-**score**: An overall performance score calculated by DCPerf, which can be used to compare different systems or configurations.
177
+
178
+
{{% notice Note %}}
179
+
`wrk` is a modern HTTP benchmarking tool used to generate load and measure web server performance. It is widely used for benchmarking because it can produce significant load and provides detailed statistics. For more information, see [wrk's GitHub page](https://github.com/wg/wrk).
180
+
{{% /notice %}}
181
+
182
+
These metrics help you evaluate the performance and reliability of the system under test. Higher values for successful requests and RPS, and lower response times, generally indicate better performance. The score provides a single value for easy comparison across runs or systems.
183
+
184
+
## Next steps
185
+
186
+
These are some activites you might like to try next:
187
+
188
+
* Use the results to compare performance across different systems, hardware configurations, or after making system changes, such as kernel, compiler, or driver updates.
189
+
190
+
* Consider tuning system parameters or trying alternative DCPerf benchmarks to further evaluate your environment.
191
+
192
+
* Explore additional DCPerf workloads, including those that simulate key-value stores, in-memory caching, or machine learning inference.
0 commit comments