-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
119 lines (92 loc) · 5.58 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Scripts for Testing the Real-Time Behavior of I/O Schedulers on SSDs
Copyright (c) 2018, 2019 Till Miemietz
The scripts contained in this repository can be used to test the behavior of
different I/O schedulers of the Linux multi-queue block layer in a real-time
scenario. This document only contains general information about the setup and
the requirements to run all tests. The README files in the subdirectories of the
binary folder will give further information on how to use particular scripts.
Make sure that the machine you are running the benchmarks on has at least four
cores. If this is not the case, the fio benchmark files may break. Altering
the CPU number needed involves changing the CPU settings in all .fio files
located in the bin directory. For further information about CPU configuration
for fio benchmarks, please take a look at the documentation of fio.
Also, to get realistic results from the benchmarks, they should not be run
inside a virtual machine. During the original tests, hyperthreading was
disabled.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Almost all benchmarks will write to the raw device under test. EXECUTING THEM
ON DEVICES OR PARTITIONS WITH MEANINGFUL DATA WILL RESULT IN A TOTAL LOSS OF
THESE FILES!!! Before running the benchmarks, check if the device under test is
actually the one that you want to run the benchmark on. You are able to
specify the device under test in a central spot at the beginning of all scripts.
Getting Started
---------------
Before installing the benchmark suite make sure that your system fulfills the
minimal hardware requirements for executing all tests. These are:
- at least 4 CPU cores
- at least 8 GB of main memory
- a primary drive for the OS and all data with a size of at least 80 GiB
- a secondary drive on that the benchmarks are run on
The first step towards executing the benchmarks is installing a fresh
Ubuntu 18.04 LTS. Choosing the minimal version during installation is
recommended. FOR INTERNAL REASONS, YOU MUST USE ENGLISH AS THE INSTALLATION
LANGUAGE! However, this requirement does not impact your choice of keyboard
language. Follow the steps in the installer and reboot the system.
Afterwards, configure your network settings to get access to the internet. Make
sure that your changes get into effect by executing
sudo service network-manager restart
in a terminal. Before you can run the automated setup scripts included in this
repository, you will have to install git and the Korn shell. To to so, use the
following commands:
sudo apt-get update
sudo apt-get install git ksh
Next, clone the k2-benchmark repository:
git clone https://github.com/TUD-OS/k2-benchmarks
Inside the repo, there are two scripts named pre_reboot and post_reboot.
pre_reboot is responsible for downloading and installing all packages needed to
run the complete toolchain. It also downloads further repositories such as the
modified LTTnG tracer and the K2 I/O scheduler kernel module. When all
prerequisites are present on the system, pre_reboot will build a customized
version of the 4.15.0 Linux kernel. For that, it uses the kernel build
configuration as currently used by the OS. However, during kernel building,
additional messages that ask you for confirmation to build some kernel modules
may pop up. Choosing the default settings for all questions is recommended.
After the kernel is build, the settings of GRUB and MySQL are adapted to the
setup used for the benchmarks.
In short use
./pre_reboot
to do the first step of system setup. When the script is finished, reboot the
system. After system reboot run
./post_reboot
to build and install all components that rely on the modified kernel version.
Now the system should be ready to run all K2-related benchmarks that can be
found in the bin directory. The result directory trees of the benchmarks can be
found in ~/k2-results.
Reproducing Measurements Presented in the Paper
-----------------------------------------------
To reproduce the central latency micro benchmark figures that are part of the K2
paper, you can can use the script generate_paper_plots. It takes no arguments.
The main purpose of the script is to set the benchmark configuration of the
run_bench micro benchmark script to the values used for obtaining the results
presented in the paper. It then runs the benchmark for the complete
configuration space which may take up to three days. Afterwards, the results are
automatically transformed into a LaTeX file that is compiled in the end.
Use "./generate_paper_plots" to start the benchmarking and plotting toolchain.
The resulting .pdf files in the k2-benchmarks directory contain the final plots.
Script Packages
---------------
There are several categories of benchmark scripts. Detailed information can be
found in the respective directory. Roughly, the subdirectories contain
scripts to test the following:
micro - microbenchmarks for testing I/O latencies with different I/O
schedulers
mysql - macrobenchmarks for comparing latencies of I/O schedulers in a
MySQL setup using sysbench
throughput - scripts for evaluating the tradeoff between queue depth and
maximum throughput for the K2 I/O scheduler
vendor - benchmarks for reproducing the I/O characteristics of drives as
advertised by their vendors (IOPS/throughput)
postproc - scripts for generating the plots used in the K2 paper from the
raw CSV data files.