Skip to content

Le cours de Systèmes Distribués, 3A ISI

Bienvenue, et bienvenu, dans la page du cours 5MMSYSD de l'Ensimag.

Il traite de systèmes distribués par le prisme du parallélisme et de la performance d'une application distribuée. Il est complémentaire des cours d'Algorithmique Distribuée et de celui de Cloud Avancé.

L'évaluation principale est constituée d'un projet logiciel est à implanter en équipe sur le temps du semestre. Chaque équipe l'implante en choisissant une technologie différente de celles des autres équipes. Chaque équipe déploie son application et mesure ses performances sur une véritable plateforme distribuée adaptée à la recherche scientifique dans le domaine (Grid5000).

Une attention particulière sera mise sur la qualité scientifique des mesures de performances effectuées. Cela inclue la reproductibilité au sens large: automatisation de la prise de mesure, y compris le déploiement de l'application; la conservation des paramètres associés à chaque mesure; la génération automatique des résumés et des courbes de performances.

Une modélisation préalable simple de l'implantation de l'application par l'équipe sera réalisée et évaluée. Elle devra être une borne inférieure et supérieure des performances possibles avec vos tests. Elle servira à calibrer les instances utilisées par vos expérimentations.

Cette modélisation sera comparée aux résultats expérimentaux finaux et les différences devront être analysées et comparées.

Le déroulement globale des séances est disponible ici

Pré-requis et attendus du cours

Un projet où vos choix sont volontairement peu guidés

Ce cours arrive en fin de cursus ingénieur. Il est volontairement peu guidé dans l'implantation de votre application distribuée. Le but est de laisser votre équipe (presque) seule devant votre techno, sa doc et de vous laisser faire vos choix algortihmiques, de programmation, de modélisation, d'évaluation.

Votre reflexion sera évaluée

Des choix objectivement absurdes seront pénalisés. Par exemple, les machines de grid5000 qui serviront aux mesures, ont souvent deux réseaux: un réseau standard lent et un réseau rapide; et un système de fichiers en réseau, standard, sur le réseau lent (NFS, le même qu'à l'Ensimag).

Un choix absurde avec une technologie à haute performance serait d'utiliser le réseau lent des machines.

Un autre choix absurde pour une technologie utilisant le système de fichier réseaux, serait de mesurer ses performances avec des instances tellement petites qu'il n'y aurait aucun gain en performance à utiliser plusieurs machines.

Une évaluation scientifiquement solide de votre implémentation

Il est aussi demandé d'anticiper les implications de vos choix sur les performances de l'application, d'être capable de modéliser grossièrement son comportement et de calibrer ce modèle avec les paramètres de la machine réelle dans la technologie choisie.

Un premier jalon expérimental sera la mesure des performances brutes avec votre technologie.

La démonstration du recul de votre équipe sur le problème

Le recul que vous prendrez sur vos choix et la technologie sera un aspect important de la notation. Le fait que ce recul soit bien partagé dans l'équipe est donc important.

Lors de la présentation finale, l'orateur est tiré au hasard dans l'équipe au début de votre soutenance. Ce ne sera pas le plus compétent qui fera la présentation.

Une bonne répartition du travail sera essentielle

Pour des équipes de 4 ou 5 personnes, il y aura du travail pour 4 ou 5. Utilisez les capacités de vos camarades. Il y a peu de temps.

L'intégration des connaissances déjà acquises

Certaines connaissances que vous avez déjà seront mobilisées

  • installation/administration/déploiement de logiciels sous Linux
  • gitlab pour le code de votre projet
  • automatiser le déploiement et les mesures. Maintenir le code des scripts dans le gitlab
  • travail à distance: ssh, tmux, scripts, batch scheduler
  • architectures des ordinateurs
  • réseaux
  • systèmes distribués (ce que vous savez déjà, ce que vous apprendrez pendant ce cours et ce projet)
  • ordre de grandeurs des performances
  • lire la doc technique
  • comparaison à la performance crête.
  • statistiques et évaluation de performance
  • faire ses figures avec R + ggplot2
  • plan d'expérience: choix des mesures; choix des instances; modélisation des résultats
  • courbes statistiquement fondés: moyenne => afficher tous les points pour vérifier si la distribution des mesures est gaussienne; moyenne + intervalle de confiance => 30 mesures par point; médiane/min/max plutôt que la moyenne; points bruts directement.
  • reproductibilité des résultats: tracer ce que vous avez fait, mesuré, comment et où
  • tenir un journal: tracer des actions dans l'équipe, échange d'information. Technologie conseillée: org-mode (emacs)