Readme.md 1.97 KB
Newer Older
Florian Fischer's avatar
Florian Fischer committed
1
2
# Evaluation artifact for the emper IO runtime

3
4
We use a lot of connections in our evaluation if you encounter issues during
the connect phase of the client make sure your SOMAXCONN value is big enough.
Florian Fischer's avatar
Florian Fischer committed
5

Florian Fischer's avatar
Florian Fischer committed
6
7
## prepare

8
9
Three git submodules are included for emper, the legacy emper IO system, a rust based
load generator and for an echoserver using the IO design of memcached.
Florian Fischer's avatar
Florian Fischer committed
10

11
Run `git submodule init --update` to clone and checkout all submodules.
Florian Fischer's avatar
Florian Fischer committed
12
13
14

## build

15
Requirements:
16

17
18
19
20
21
	* pthread
	* libevent
	* rust / cargo
	* golang

Florian Fischer's avatar
Florian Fischer committed
22
23
Simply run `make` to build all non-emper echo server implementations

24
25
All used emper variants will be build when running `eval.py`.

Florian Fischer's avatar
Florian Fischer committed
26
27
28
29
30
31
## evaluate

Run `./eval.py -l` to benchmark all included implementations on the localhost.

See `./eval.py -h` for available options.

32
Evaluation results will be generated in `results/<git-desc>-<clients>+-<server-host>/<timestamp>`
33

34
A simple matplotlib plot can be shown by running `plot_results.py results/<experiment-description>/<timestamp>`
35

36
## Evaluation across hosts
Florian Fischer's avatar
Florian Fischer committed
37
38
39

Per default `eval.py` will start the servers per ssh on faui49big02 so
if you run `eval.py` on any other machine you have a two host setup.
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
The server host is changeable using the `--host` cli argument.
Additionally clients can be specified with the `--clients` argument.
The client commands will be started via SSH on the remote hosts and
synchronize the start of their echophase using a coordinator process running
on the host where `eval.py` is running.

## Adding server implementations

All server implementations are defined in `bench/server_cmds.py` and the standard
Makefile will recursively build all Makefiles found in `servers/`.
Adding a new server is done by including the needed source and a Makefile to build
it in the `server/` subdirectory and add the command used to run the server in `bench/server_cmds.py`.

EMPER variants are defined in `bench/emper.py`.
See the documentation there for information about how EMPER variants are build and
which options are available.