reproducible evaluation and fault injection of large-scale distributed systems.


Open Positions



A very early alpha prototype is available to try here. Any feedback on features, availability, and general comments is welcome. To get in touch contact Miguel Matos (miguel.marques.matos AT tecnico.ulisboa.pt).



  1. Have a Docker client/daemon up and running on your machine. Check the Docker documentation for instructions.

  2. Build the Docker images and push them to a local registry
    make all push
  3. Check config.yaml and adjust it accordingly to your system. The provide defaults provided should work in most cases.

  4. Initialize a cluster with only the local node.
    ./bin/lsds cluster init

    If bash is not your default shell, prefix all commands with bash as in

    bash bin/lsds cluster init
  5. Start the cluster
    ./bin/lsds cluster up
  6. Check the status of the cluster with
    ./bin/lsds cluster status
  7. Let’s run a simple deployment with a nginx server and a siege client.
    ./bin/lsds benchmark --app examples/nginx/nginx.yaml --name hello-world --run-time 120

    which will run the experiment for 120 seconds.

  8. To run a more interesting scenario with churn
    ./bin/lsds benchmark --app examples/nginx/nginx.yaml --name hello-churn --churn examples/nginx/churn.yaml
  9. Results will become available at <data>-<experiment-name>

  10. To shutdown the cluster run
    ./bin/lsds cluster down

In a cluster

  1. Have a cluster ready with Docker running on every host and make sure that every host is accessible though ssh.
  2. Adjust config.yaml to match your cluster settings, with one entry per each cluster machine
  3. To run an experiment in the cluster follow steps 4-9 of the local deployment.


If you find any issue or would like to contribute with new features open a new issue and we will get in touch as soon as possible.