Allows running benchexec on multiple computers.
- control a cluster of computers running benchexec
- define a cluster of machines
- start a new job when machine finishes
- send e-mail when a machine finishes
- python3
pip3 install -r requirements.txt
(if you don't have root access, you can stillpip3 install --user -r requirements.txt
)
ssh
- ability to run the startup script
- ability to run the tool
- linux system
Please note this guide is very shallow at the moment, I will eventually come up with something better and more complete.
distribench requires SSH connection to every machine that is supposed to be part of the cluster. In order to reduce user interaction, it is recommended to setup SSH login via a key:
- Generate an ssh key via
ssh-keygen
on the master node - Install the ssh key on each machine (meaning
ssh-copy-id
); in MUNI network, it is sufficient to install the key onaisa
- Prepare a file called
machines
on the master node. Each line of this file contains hostname of a usable machine in the cluster - Prepare benchexec configuration XML (
benchexec_config.xml
) on master node - Prepare client-side script on master node. It has to be exactly the same for all workers. For example client script, see run_benchmarks.cat
- Prepare distribution archive of your tool on master node
- Start
./distribute_benchmarks.py
on master node (running the script without parameters reveals usage)
- each worker node gets startup script
- each worker node gets benchexec config (in the same directory as the script)
- each worker node gets tool distribution archive (in the same directory as the script)
- each worker node is locked by existence of a file (client scripts in a network need to agree on the precise filename)
- install benchmarks set
- install benchexec
- extract tool archive to some folder and add it into
$PATH
- send status reports to server
- run benchexec
- collecting tool output