VBENCH is a fork of MOSBENCH but allows running benchmarks inside VM as well.
- Currently, we have included the following benchmarks for evaluation:
- Gmake: Fork intensive, but spends most of the time in the userspace.
- Exim: Crazily stresses
mm
,fs
, andprocess
sub-systems. - Psearchy: Stresses the interrupt service, used to stress the writer side of the
mmap_rwsem
. - Metis: Stresses the reader side of the
mmap_sem
. - Hist: Stresses the reader side of the
mmap_sem
.
-
First compile the relevant benchmarks as follows:
- Exim:
make all-exim
- Psearchy:
make all-psearchy
- Metis:
make all-metis
- Hist:
make all-hist
- Exim:
-
Configure the following variables in the
config.py
:
ROOT = "~/vbench" # Provide the relative path (this is also used in the VM)
CPU_CNTS = 160 # Total number of cores (cores * sockets)
CORES_PER_SOCKET = 10
CPU_STEP = 10 # Numbers of cores to increase until CPU_CNTS in each run
-
Modify the hostname in the hosts.py. You can set it to
127.0.0.1
and disable sanity check inmparts/host.py
-
Create multiple
tmpfs
partitions with the following command:
$ sudo ./mkmounts tmpfs-separate # sudo is mandatory
- After this, you can use
config.py
to execute benchmarks.
$ ./config.py -h
Options:
-h, --help show this help message and exit
-d, --dryrun dry run (default: sanityRun = False)
-t TRIALS, --trials=TRIALS
trials (default: TRY = 1)
-c CORES, --cores=CORES
number of cores for dryrun, default = 80
-n, --profile-nos get numbers using perf stat
-r, --perf-record record all functions
--kvm-record perf record for guest, only works with -r option
--guest-only-record only records the guest, no host side recording
-p, --pin pin all the tasks in qemu process
-l, --lockstats get lock stats
-m, --multivm run two VMs simultaneously
--kvm-stat get the kvm stats if possible (only possible for PVM)
--trace-kvm get the results using trace-cmd
- To run a benchmark, here
exim
, across all cores, execute the following:
$ ./config.py exim # runs the exim benchmark from core 1 to core 160.
- After running the benchmark, results are displayed on the terminal
and are stored in the results folder, which can be used for plotting
by using the
./graph
script.