Projets Master 1 année 2014 - 2015

Liste projets

Navigateur de trace d'exécution

RTSim est un simulateur de systèmes temps réel open source: (https://github.com/glipari/rtlib2.0) Il s'agit d'une bibliothèque en C++ qui modélise :

  • des processeurs,
  • le noyau d'un système d'exploitation,
  • des algorithmes d'ordonnancement temps réel
  • des tâches qui contiennent des listes d'instructions

Le simulateur produit une trace textuelle de l'évolution temporelle du système.

Le projet consiste à écrire un logiciel graphique (en Java, Python, C++ ou un autre langage bien connu) pour visualiser la trace produite par une simulation. Le programme dois permettre de naviguer dans la trace et d'en visualiser un morceau.

But: apprendre à concevoir une interface utilisateur complexe.

Compétences: connaissance de C++ (pour comprendre le fonctionnement du simulateur). La connaissance de l'ordonnancement temps réel n'est pas requis.

Produire de la musique en temps réel

Pour produire de la musique de qualité professionnelle avec un ordinateur (MAO, Musique Assistée par Ordinateur), il est nécessaire d'utiliser des outils logiciels spécifiques. Par exemple, l'outil JACK (http://jackaudio.org/) permet de manipuler des flux (streams) audio en temps réel de manière très simple. Il est ainsi possible de faire de l'enregistrement audio multipiste et du MIDI simultanément.

Le traitement temps réel des flux audio est très sensible à la latence. Pour utiliser JACK de manière optimale, il est donc nécessaire de configurer le noyau pour une utilisation temps réel.

Même en utilisant un noyau configuré pour le temps réel et un ordonnancement à priorités fixées, il n'est pas simple d'obtenir de bons résultats.

Un premier problème est que l'ordonnanceur temps réel requiert les droits d'administration du système (root). Par conséquent, si des processus avec des priorités temps réel s'exécutent sans jamais s'interrompre, les autres processus ne s'exécutent jamais : ils souffrent de "famine" (starvation). Un deuxième problème est qu'il n'est pas simple de choisir la priorité à affecter aux différentes tâches concurrentes temps réel.

Pour permettre à un utilisateur sans les droits d'administrateur d'utiliser les fonctionnalités temps réel, il faut empêcher qu'un processus obtienne le contrôle exclusif du processeur. Le nouvel ordonnanceur SCHED_DEADLINE, disponible dans le noyau Linux à partir de la version 3.14, à été conçu pour répondre en partie à ce problème. Avec SCHED_DEADLINE, il est possible de contraindre le temps d'exécution d'une tâche à respecter un "quota" correspondant à une fraction du temps d'exécution total du processeur. De plus, avec SCHED_DEADLINE l'utilisateur n'a pas besoin de spécifier les priorités des tâches (elles sont calculées par l'ordonnanceur).

L'objective est donc de concevoir et réaliser un architecture logiciel pour gérer la qualité du service des applications multimedia sur Linux, basée sur le nouveau ordonnancer SCHED_DEADLINE.

Cet objectif final ambitieux dépasse vraissemblablement le cadre de ce projet. On propose donc de concevoir un ensemble de petits outils, chacun simple et extensible.

  • Un outil pour mesurer les temps d'exécution des taches gérés par SCHED_DEADLINE. On peut utiliser le module sched_deadline_spy comme point de départ.
  • Un outil pour contrôler l'admission de nouvelles tâches temps réel. L'outil est un processus "daemon" qui s'exécute avec des droits "root" et s'interface avec les tâches. Si une tâche demande à être gérée par l'ordonnancer SCHED_DEADLINE, elle envoie une requête au processus daemon qui vérifie qu'il reste suffisament de quota processeur pour accepter la requête. Si la réponse est positive, la tâche est acceptée ; sinon, la tâche est rejetée.

Les outils développés pendant le projet seront validé sur l'application JACK.

Compétences : Une connaissance d’un ou plusieurs des concepts suivants serait un plus : bon niveau de programmation en C/C++, programmation système, programmation concurrent et parallèle, configuration et compilation du noyaux Linux.

Author: Giuseppe Lipari

Created: 2017-11-24 ven. 10:34

Validate