https://github.com/dhschall/gem5-svr-bench

A framework to run various server workloads on gem5

https://github.com/dhschall/gem5-svr-bench

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.3%) to scientific vocabulary
Last synced: 4 months ago · JSON representation

Repository

A framework to run various server workloads on gem5

Basic Info
  • Host: GitHub
  • Owner: dhschall
  • License: mit
  • Language: Python
  • Default Branch: main
  • Size: 4.33 MB
Statistics
  • Stars: 2
  • Watchers: 2
  • Forks: 1
  • Open Issues: 9
  • Releases: 2
Created over 1 year ago · Last pushed 5 months ago
Metadata Files
Readme License

README.md

gem5 Server Benchmarks

This repo contains various server and data center workloads runnable in gem5 full-sytem mode. Refer to the benchmark README for all benchmarks we currently support.

[!IMPORTANT] This repo is in development phase. Please raise issues or propose PR if you encounter problems. We appreciate any feedback.

Prerequisites

Use the install.sh to install qemu along with other packages needed to build the disk image for gem5.

bash ./scripts/install.sh

Prepare the benchmark disk image

Build base disk image

To create a fresh base image with docker and all gem5 tools installed use the build-<x86/arm>.sh script in the image folder. This step has done only once and the same base disk image can be used for different workloads.

[!TIP] The building process from the base disk image is inherited from gem5-resources. For further details refer to the build README and the gem5-resources documentation.

Use the corresponding script to build the x86 or Arm disk image. Note that the arm building process assumes you run on an arm machineas and use kvm. See the README for details to run without kvm.

```bash

Build the disk image for x86 Ubuntu 22.04

cd image sudo ./build-x86.sh 22.04
cd ..

Building the disk image for arm Ubuntu 24.04 (22.04 not supported)

cd image sudo ./build-arm.sh 24.04
cd .. ```

Depending on the type of machine the building process can take a while (x86 ~10min, arm ~30min). Once completed the new base image will be placed in the x86-disk-image-22-04 / arm-disk-image-24-04 directory.

Install the benchmarks on the disks

The base image has only docker installed and all necessary tools. However, the docker images for the benchmarks are not pulled which needs to be done outside of gem5.

Run the install script to automatically install the benchmarks onto the disk image. ```bash

./image/install.sh `` The script will create a new working directorywkdir` and copy all files needed for the gem5 simulation needed (disk-image, kernel, http-client) into it. Afterwards the disk is booted with QEMU and the benchmarks installed onto the disk

Booting the disk image in QEMU

To modify the disk image and add content manually create first the working directory with: make -f image/Makefile build-wkdir Then boot the image with make -f image/Makefile run-<x86/arm> Finally, for debugging purposes, you can use another terminal login via ssh using port 8888. ssh gem5@localhost -p 8888

Gem5 simulation

Boot benchmark and take snapshot

Before we can start simulating the actual benchmark (1) Linux has to be booted, (2) the docker image has to be started and (3) the benchmarks JIT engine -- very common for server applications -- has to be warmed up. The KVM accelerated core is used to perform all three steps after which a checkpoint is taken.

Note KVM can only be used if the host ISA is the same as the simulated system.

Automated setup

To generate all checkpoints, consider the scripts/setup-all.sh script:

```bash

Edit the GEM5 variable at the top to point to a valid GEM5 binary

vim ./scripts/setup-all.sh

Execute the script

bash ./scripts/setup-all.sh ```

This will take 5-10 minutes. The output can be inspected in the following ways: - See the process state with pueue status (running / failed ...) - View the gem5 log (gem5.log) or the Linux output (board.terminal) in the results/<arch>/setup/* output directories

Simulation

After the checkpoints were taken, the simulation can be executed via the scripts/run-all.sh script:

```bash

Edit the GEM5 variable at the top to point to a valid GEM5 binary

Adjust the other variables to select benchmarks and the architecture

vim ./scripts/run-all.sh

Start the simulation, giving it a label to identify the experiment later

bash ./scripts/run-all.sh ```

Similar to the setup process, the output can be observed in the results/<arch>/<SCENARIO_NAME>/* folders

Owner

  • Name: David Schall
  • Login: dhschall
  • Kind: user
  • Location: Edinburgh
  • Company: University of Edinburgh

GitHub Events

Total
  • Create event: 40
  • Release event: 2
  • Issues event: 7
  • Watch event: 3
  • Delete event: 36
  • Member event: 1
  • Issue comment event: 15
  • Push event: 96
  • Public event: 1
  • Pull request review event: 7
  • Pull request review comment event: 8
  • Pull request event: 82
Last Year
  • Create event: 40
  • Release event: 2
  • Issues event: 7
  • Watch event: 3
  • Delete event: 36
  • Member event: 1
  • Issue comment event: 15
  • Push event: 96
  • Public event: 1
  • Pull request review event: 7
  • Pull request review comment event: 8
  • Pull request event: 82

Issues and Pull Requests

Last synced: 5 months ago

All Time
  • Total issues: 7
  • Total pull requests: 75
  • Average time to close issues: 2 months
  • Average time to close pull requests: 10 days
  • Total issue authors: 2
  • Total pull request authors: 3
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.35
  • Merged pull requests: 52
  • Bot issues: 0
  • Bot pull requests: 50
Past Year
  • Issues: 7
  • Pull requests: 75
  • Average time to close issues: 2 months
  • Average time to close pull requests: 10 days
  • Issue authors: 2
  • Pull request authors: 3
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.35
  • Merged pull requests: 52
  • Bot issues: 0
  • Bot pull requests: 50
Top Authors
Issue Authors
  • dhschall (5)
  • shadowcpy (2)
Pull Request Authors
  • dependabot[bot] (50)
  • dhschall (19)
  • shadowcpy (6)
Top Labels
Issue Labels
feature (3) ARM (2) bug (1) documentation (1)
Pull Request Labels
dependencies (50) javascript (33) github_actions (17) bug (4) ARM (2) documentation (1) feature (1)