Nixcanbuildthe*full*softwarestackneededforthisexperimentaslongassourcecoderemainsavailable.Aswealsoputoursourcecodeon#link("https://www.softwareheritage.org/")[SoftwareHeritage]wehopethatthisartifactwillhavelong-termlongevity.Forthesakeofthisartifactreviewers' quality of life, we have set up a binary cache with precompiled versions of the software used in the experiments.
No special hardware is required to reproduce our work. We think that our Nix environments will work on future Nix versions, but for the sake of traceability we stress that we have used Nix 2.18.0 installed either by #link("https://archive.softwareheritage.org/swh:1:rev:b5b47f1ea628ecaad5f2d95580ed393832b36dc8;origin=https://github.com/DavHau/nix-portable;visit=swh:1:snp:318694dfdf0449f0a95b20aab7e8370cff809a66")[nix-portable 0.10.0] or directly available via NixOS using channel `23-11`.
Our software environments likely work on all platforms supported by Nix (Linux on `i686`/`x86_64`/`aarch64` and MacOS on `x86_64`/`aarch64` as of 2024-05-07) but we have only tested it on Linux on `x86_64`. More precisely, we have used the #link("https://www.grid5000.fr/w/Grenoble:Hardware#dahu")[Dahu Grid'5000cluster](DellPowerEdgeC6420,2xIntelXeonGold6130,192GiBofRAM)onthedefaultoperatingsystemavailableonGrid'5000 as of 2024-05-07 (Debian `5.10.209-2` using Linux kernel `5.10.0-28-amd64`).
== Install Nix
If you are already using NixOS, Nix should already be usable on your system.
Otherwise up-to-date information on how to install Nix is available on #link("https://nixos.org/download/").
As of 2024-05-07 the recommended command to install Nix (on a Linux system running systemd, with SELinux disabled and `sudo` usable) is to run the following command.
#fullbox[
```sh
sh <(curl -L https://nixos.org/nix/install) --daemon
```
]
Please note that you may need to launch a new shell, to source a file or to modify your shell configuration script as indicated by the Nix installer.
*Test your installation.* Launching `nix-shell --version` should run and print you the Nix version installed.
== Enable Nix flakes
Our Nix packages rely on #link("https://nixos.wiki/wiki/Flakes")[Nix flakes], which are not enabled by default as of 2024-05-07.
Up-to-date information on how to enable them can be found on the #link("https://nixos.wiki/wiki/Flakes")[Nix flakes documentation].
If you are using NixOS and as of 2024-05-07, flakes can be enabled by setting the following in your system configuration file.
*Testing your flakes configuration.* Launching `nix build 'github:nixos/nixpkgs?ref=23.11#hello'` should create a `result` symbolic link in your current directory. Then, launching `./result/bin/hello` should print `Hello, world!`.
== Configure Nix to use our binary cache
This step is completely optional but recommended for this artifact reviewers, as it enables to download precompiled versions of our software environments instead of building them on your own machine.
#todo[cachix]
== Version traceability
#todo[dump all envs versions]
= Step-by-Step Instructions
#todo[clone repo]
#todo[introduce data caches on zenodo]
#todo[introduce how commands should be run (root of cloned repo)]
#todo[propose paths in the graph depending on what the reproducer wants to do]
== Trace analysis??
== Job power prediction <sec-job-power-pred>
*Inputs.* ???\
*Outputs.*
- Job power predictions for all prediction methods. #todo[cache mean/max power prediction tarballs]
== Modeling of the power behavior of Marconi100 nodes
*Inputs.* None.\
*Outputs.*
- Marconi100 power and job traces on your disk.
- Marconi100 nodes power model.
- Notebook that analyses the power profiles of M100 nodes.
=== Get power and job Marconi100 traces on your disk <sec-m100-power-job-traces>
This section downloads parts of the Marconi100 trace from Zenodo, checks that the downloaded parts have the right content (via a md5 checksum), extracts the data needed by later stages of the pipeline (power usage traces, jobs information traces), then removes unneeded extracted files and the downloaded files.
#fullbox(footer:[Download: 254 Go. Final disk used: 2.5 Go. Time: 00:40:00.])[
The following commands generate workload parameters (_i.e._, when each workload should start and end). The start points are taken randomly during the 2022 M100 trace.
==== Merge job power predictions and jobs information into a single file
The job power predictions (as outputted by @sec-job-power-pred) are two archives that we assume are on your disk in the `./user-power-predictions` directory.
These archives contain gzipped files for each user.
To make things more convenient for the generation of simulation inputs, all the job power prediction files are merged into a single file with the following commands.
#fullbox(footer: [Temporary disk used: 519 Mo. Final disk used: 25 Mo. Time: 00:00:30.])[