Commit 433adf1f authored by Florian Fischer's avatar Florian Fischer
Browse files

add documentation about server implementations

parent b54e8d81
Pipeline #67501 failed with stage
in 26 seconds
# Evaluation artifact for the emper IO runtime
We use a lot of connections in our evaluation make sure yout SOMAXCONN value is big enough.
I used `sysctl -w net.core.somaxconn=10240` for my evaluation.
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.
## prepare
Three git submodules are included for emper, the legacy emper IO system and for a
echoserver using the IO design of memcached.
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.
Run `git submodule init --update` to clone and checkout all submodules.
......@@ -29,11 +29,27 @@ Run `./eval.py -l` to benchmark all included implementations on the localhost.
See `./eval.py -h` for available options.
Evaluation results will be generated in `results/<eval-host>-<server-host>/<timestamp>`
Evaluation results will be generated in `results/<git-desc>-<clients>+-<server-host>/<timestamp>`
A simple matplotlib plot can be shown by running `plot_results.py results/<eval-host>-<server-host>/<timestamp>`
A simple matplotlib plot can be shown by running `plot_results.py results/<experiment-description>/<timestamp>`
## Two host evaluation
## Evaluation across hosts
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.
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.
# Copyright 2021 Florian Fischer
"""Emper flavor definitions, selection, preparation and building"""
"""Emper flavor definitions, selection, preparation and building
The FLAVORS dictionary contains all available emper variants and the
needed information how to build and execute them.
A flavor is described by its name and a dictionary containing a description
(flavor_name: {description_key: value}).
The flavors are selectable by their names and may feature the following
description keys:
* checkout: Git commitish used to create a worktree from the emper subproject.
It can use the remotes origin (i4/manycore/emper) or muhq (aj46ezos/emper).
All merge requests in origin are avalable as origin/merge-requests/<id>.
* meson_options: A string passed to the meson call setting up the build environment
for this flavor.
* meson_env: Dictionary witch's entries are passed in the environment of the meson call
setting up this flavor.
* patches: List of path files under patches/ applied after checking out the worktree
and before running meson.
* server_cmd_prefix: String added in front of the SERVER_CMD
* server_cmd_suffix: String added at the end of SERVER_CMD
"""
import fnmatch
import logging
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment