This directory explains how to automatically run uBFT's experiments
The file base-scripts/config.sh
needs to be configured before running the experiments. Several variables need to be set as explained below:
Note that the deployment scripts need not run from a deployment machine. You can instead run them e.g., from your laptop.
ROOT_DIR
It defines the root directory where the scripts deploy the precompiled binaries in the deployment machines. The default value is the home directory of the user used to access the deployment machines.
machine1
machine2
machine3
machine4
These variables define the symbolic names to access the deployment machines over ssh. To setup these symbolic names you need to edit ~/.ssh/config
in the machine you run the deployment scripts from (e.g., your laptop). You can learn how to do this here.
It is important to be able to access the deployment machines without password. Thus, you need to install ssh keys. You can learn how to do this here.
If your key contains a passphrase, you can rely on ssh-agent
, also explained in the above previous link.
For example, the following entry in ~/.ssh/config
Host mymachine
HostName superlongname.example.com
User user
Port 22
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 120
Allows you to access the machine by merely typing ssh mymachine
.
machine1hostname
machine2hostname
machine3hostname
machine4hostname
These variables define the Fully Qualified Domain Names (FQDN) of these machines. Every machine should be able to access every other machine using the corresponding FQDN. You can learn how to setup the FQDNs here.
REGISTRY_MACHINE
It defines which machine is going to run the memcached server needed to exchange QP information when setting up RDMA connections.
Make sure that memcached
is installed in the declared machine and that its port 11211 is open.
UBFT_HAVE_SUDO_ACCESS
UBFT_SUDO_ASKS_PASS
UBFT_SUDO_PASS
These parameters define whether the processes launched during the experiments have sudo access.
We do not require root priviledges for our experiments. Leave these variables as is.
If you want to launch the processes with sudo, then (assuming you have sudo access in the deployement machines) set the first variable to true
.
If when issuing a command with sudo you need to type your password, set the second variable to true
and put the password in the third variable.
UBFT_CPUNODEBIND
UBFT_CPUMEMBIND
Set the variables, which refer to the deployment machines, to achieve optimal performance.
In a multi-socket machine, set UBFT_CPUNODEBIND
to the socket that is closer to the RDMA NIC and UBFT_CPUMEMBIND
to the memory that is closer to this socket.
The instructions in mu-build
explain how to retrieve this information.
Under graph-data
you will find subdirectories with all the necessary instructions for every experiment.