Skip to content
Snippets Groups Projects
Name Last commit Last update
expe
sched
util
.gitignore
README.md
default.nix

RM4ES Practicals

This repository contains the material for the practical session of course RM4ES given in the Spring semester of 2024.

Install

Clone this repository:

git clone git@gitlab.irit.fr:sepia-pub/mael/RM4ES-practicals.git
cd RM4ES-practicals

TODO: how to install Nix on lab computers

TODO: how to install poetry on lab computers

Status rn

We can start a small expe!

On one shell:

ns -A dev
pybatsim newSched

On the other shell:

ns -A expe
batsim -p expe/1machine.xml -w expe/2jobs.json -e out/

Session 1 : getting started

Objective for this session:

  • setting up all the simulation environment
  • understanding the workload representation in Batsim
  • having a first scheduling algorithm running

Introduction

The resource and job management simulator Batsim, that we are going to use during these practicals, needs three inputs:

  • a platform: description of the IT infrastructure;
  • a workload: list of jobs that are going to arrive and their characteristics;
  • a scheduling algorithm: the "brain" of the system, taking decision on when and where to execute the jobs.

The platform is represented by an XML file. You have a simple example (monomachine platform) in the file expe/1machine.xml. This is enough for now! We will come back to it in more detail in session 3.

The workload is represented by a JSON file (see expe/2jobs.json):

{
    "jobs": [
        {"id": "1", "profile": "3UT", "res": 1, "walltime":10, "subtime": 0},
        {"id": "2", "profile": "4UT", "res": 1, "walltime":6, "subtime": 0},
    ],
    "profiles": {
        "3UT": {"delay": 3,"type": "delay"},
        "4UT": {"delay": 4,"type": "delay"}
    }
}

The meaning of each field in the JSON is explained in Batsim workload documentation.

The scheduling algorithm has to be developed separately, and communicates with Batsim through the messages defined in Batsim protocol. In this tutorial, we will develop our schedulers in Python thanks to pybatsim. The scheduler implementations will be located in the folder sched/.

Exercise 1

Represent the workload used previously in this course (exercise 1 from the exercise document) in Batsim JSON format. You will put it in a new file named expe/ex1.json

Exercise 2

TODO run a simulation with pre-defined scheduler rejector. Look at the outputs...

Exercise 3

TODO develop a monomachine FCFS scheduler and run it on the inputs from ex1. Visualize the output thanks to evalys.

Session 2: monomachine schedulers

  • séance 2 : monomachine + d'autres algos : RMS, EDF (3 cas: infra sous-dimensionnée / normalement dim / sur-dim, remarquer que sur du surdimensioné, l'algo change rien) => example simple avec 1 grosse tâche + 1 petite tâche avec deadline, en EDF sans preamption ça passe pas.

Session 3: multimachine schedulers

  • séance 3 : multimachine hétérogènes en vitesse avec deadlines

Session 4: energy constraint

  • séacnz 4 : EDF avec contrainte énergétique (powercap ou energycap)

Session 5: preamptive scheduling

  • séance 5 : implémenter la préamption

Open bugs

  • mismatch python version if I want to use batsim and evalys. Either python util/plot.py out/_jobs.csv or batsim -p expe/1machine.xml -w expe/ex1.json -e out/ make an error
  • no working poetry in nix-shell
  • will that work in the lab's machines?