Once the repository clone you can type this command to switch to the tagged version :
```bash
git checkout tags/experiments-version
```
To reproduce the following steps make sure to be on this version.
### 1. Install dependencies
The main software used (and configured in the file `default.nix`) are:
The main software used for our simulations are:
-[Batsim](https://batsim.org/) and [SimGrid](https://simgrid.org/) for the infrastructure simulation
-[Batsim] v4.10 and [SimGrid](https://simgrid.org/)v3.31 for the infrastructure simulation
-[Batmen](https://gitlab.irit.fr/sepia-pub/mael/batmen): our set of schedulers for batsim and plugin to simulate users
-[Batmen](https://gitlab.irit.fr/sepia-pub/mael/batmen) v2.0: our set of schedulers for [Batsim] and plugin to simulate users
-[Batmen-tools](https://gitlab.irit.fr/sepia-pub/mael/batmen-tools/-/tree/main/) : a set of tools to manipulate swf files
-[Batmen-tools](https://gitlab.irit.fr/sepia-pub/mael/batmen-tools/-/tree/main/) : a set of tools to manipulate swf files
- python3, pandas, jupyter, matplotlib etc. for the data analysis
- python3, pandas, jupyter, matplotlib etc. for the data analysis
All the dependencies of the project are given in the `default.nix` file.
All the dependencies of the project and their specific versions are handled by the package manager [Nix].
If you do not have Nix installed on your machine, you can install it with
We highly recommend you to use it if you want to reproduce the experiments on your machine.
```bash
If you do not have [Nix] installed, follow the instructions provided on their [installation page](https://nixos.org/download/#download-nix).
scripts/install_nix.sh
```
Once the installation is done, enter a nix-shell where all the dependencies are available.
It might be required to type other commands for the nix command to be
This will download, compile and install them, which can take some time:
available in the current shell. In this case it will be indicated by the
prompt of the nix installation.
Open a shell with all the dependencies managed:
```bash
```bash
nix-shell -A exp_env --pure
nix-shell -A exp_env --pure
```
```
This will compile and install all the dependencies needed for the experiments.
### 2. Prepare input workload (~ 2 minutes)
It can take some time (in our case, it took 6 minutes).
### 2. Prepare input workload
Inside the nix-shell, run the following script to download (from the [Parallel Workloads Archive](https://www.cs.huji.ac.il/labs/parallel/workload/)) and filter the input workload used in the experiments:
Inside the nix-shell, run the following script to download (from the [Parallel Workloads Archive](https://www.cs.huji.ac.il/labs/parallel/workload/)) and filter the input workload used in the experiments:
```bash
```bash
scripts/prepare_workload.sh
scripts/prepare_workload.sh
```
```
### 3. Launch the campaign
### 3. Launch campaign (~7 hours)
By default the `run_expe` scripts only run one seed by experiment
The experimental campaign consists of
to do the 30 experiments you have to modify `--nb_replicat` argument
- preparing the inputs for each instance (random seed, energy state windows, workload, behavior scenario),
it should look like this:
- running the simulations with [Batsim] and Batmen, and
- computing aggregated metrics on all the simulation outputs.
The full experimental campaign described in the paper is quite long.
It took us 7 hours to complete in parallel on a 2x16 core Intel Xeon Gold 6130 machine.
For this reason, we provide two versions of the campaign:
-`scripts/run_expe.sh`: the campaign presented in the paper with 164 days, 4 effort scenarios and 30 replicates
-`scripts/run_expe_test.sh`: a small campaign with 3 days, 2 effort scenarios and 30 replicates *(runtime < 1 minute)*
Both of them take charge of calling `campaign.py` with the good parameters.