|
| 1 | +--- |
| 2 | +title: DCPerf |
| 3 | +author: Kieran Hejmadi |
| 4 | +minutes_to_complete: 20 |
| 5 | +official_docs: https://github.com/facebookresearch/DCPerf?tab=readme-ov-file#install-and-run-benchmarks |
| 6 | + |
| 7 | +additional_search_terms: |
| 8 | +- linux |
| 9 | +- Neoverse |
| 10 | + |
| 11 | +test_images: |
| 12 | +- ubuntu:22.04 |
| 13 | +test_maintenance: false |
| 14 | + |
| 15 | +layout: installtoolsall |
| 16 | +multi_install: false |
| 17 | +multitool_install_part: false |
| 18 | +tool_install: true |
| 19 | +weight: 1 |
| 20 | +--- |
| 21 | + |
| 22 | +## Introduction |
| 23 | + |
| 24 | +DCPerf is an open source benchmarking and microbenchmarking suite, originally developed by Meta, that faithfully replicates the characteristics of various general purpose 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. |
| 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. |
| 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. |
| 29 | + |
| 30 | +## Install Prerequisites |
| 31 | + |
| 32 | +Enter the default daemons to restart if asked. |
| 33 | + |
| 34 | +```bash |
| 35 | +sudo apt update |
| 36 | +sudo apt install -y python3-pip git |
| 37 | +sudo pip3 install click pyyaml tabulate pandas |
| 38 | +``` |
| 39 | + |
| 40 | +Clone the repostory |
| 41 | + |
| 42 | +```bash |
| 43 | +git clone https://github.com/facebookresearch/DCPerf.git |
| 44 | +cd DCPerf |
| 45 | +``` |
| 46 | + |
| 47 | + |
| 48 | +## Running a the MediaWiki Benchmark |
| 49 | + |
| 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. |
| 51 | + |
| 52 | +```bash |
| 53 | +wget https://github.com/facebookresearch/DCPerf/releases/download/hhvm/hhvm-3.30-multplatform-binary-ubuntu.tar.xz |
| 54 | +tar -Jxf hhvm-3.30-multplatform-binary-ubuntu.tar.xz |
| 55 | +cd hhvm |
| 56 | +sudo ./pour-hhvm.sh |
| 57 | +export LD_LIBRARY_PATH="/opt/local/hhvm-3.30/lib:$LD_LIBRARY_PATH" |
| 58 | +``` |
| 59 | + |
| 60 | +Confirm `hhvm` is available with no link time issues. `hhvm` will be available in the `DCPerf/hhvm/aarch64-ubuntu22.04/hhvm-3.30/bin` directory. |
| 61 | + |
| 62 | +```bash |
| 63 | +hhvm --version |
| 64 | +``` |
| 65 | + |
| 66 | +You should see an output like the following with no errors. |
| 67 | + |
| 68 | +```output |
| 69 | +HipHop VM 3.30.12 (rel) |
| 70 | +Compiler: 1704922878_080332982 |
| 71 | +Repo schema: 4239d11395efb06bee3ab2923797fedfee64738e |
| 72 | +``` |
| 73 | + |
| 74 | +Confirm security-enhanced Linux (SELinux) is disabled with the following commands. |
| 75 | + |
| 76 | +```bash |
| 77 | +sudo apt install selinux-utils |
| 78 | +getenforce |
| 79 | +``` |
| 80 | + |
| 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. |
| 82 | + |
| 83 | +```output |
| 84 | +Disabled |
| 85 | +``` |
| 86 | + |
| 87 | + |
| 88 | +The `install` argument to the `benchpress_cli.py` command line script can be used to automatially install all dependencies for each benchmark. |
| 89 | + |
| 90 | +```bash |
| 91 | +sudo ./benchpress_cli.py install oss_performance_mediawiki_mlp |
| 92 | +``` |
| 93 | + |
| 94 | +Please note this can take several minutes to do all the required steps. |
| 95 | + |
| 96 | + |
| 97 | +## Run the MediaWiki Benchmark |
| 98 | + |
| 99 | +For sake of brevity we will pass in duration and timeout arguments through a `JSON` dictionary with the `-i` argument. |
| 100 | + |
| 101 | +```bash |
| 102 | +sudo ./benchpress_cli.py run oss_performance_mediawiki_mlp -i '{ |
| 103 | + "duration": "30s", |
| 104 | + "timeout": "1m" |
| 105 | +}' |
| 106 | +``` |
| 107 | + |
| 108 | +Whilst the benchmark is running you will be able to observe the various processes occupying the CPU with the `top` command. |
| 109 | + |
| 110 | + |
| 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 |
| 113 | + |
| 114 | +```output |
| 115 | + "metrics": { |
| 116 | + "Combined": { |
| 117 | + "Nginx 200": 1817810, |
| 118 | + "Nginx 404": 79019, |
| 119 | + "Nginx 499": 3, |
| 120 | + "Nginx P50 time": 0.036, |
| 121 | + "Nginx P90 time": 0.056, |
| 122 | + "Nginx P95 time": 0.066, |
| 123 | + "Nginx P99 time": 0.081, |
| 124 | + "Nginx avg bytes": 158903.93039183, |
| 125 | + "Nginx avg time": 0.038826036781319, |
| 126 | + "Nginx hits": 1896832, |
| 127 | + "Wrk RPS": 3160.65, |
| 128 | + "Wrk failed requests": 79019, |
| 129 | + "Wrk requests": 1896703, |
| 130 | + "Wrk successful requests": 1817684, |
| 131 | + "Wrk wall sec": 600.1, |
| 132 | + "canonical": 0 |
| 133 | + }, |
| 134 | + "score": 2.4692578125 |
| 135 | +``` |
0 commit comments