Systèmes Distribués - Ensiwiki

La page est créée Jean-Pierre Courtois
 
CONTINUER À LIRE
Systèmes Distribués - Ensiwiki
Systèmes Distribués

Grégory Mounié

2020-2021
Outline

          1
Prologue
Grégory Mounié AT imag.fr
  Enseignement principalement en Système d'Exploitation (1A, 2A,
             2A Alternant, Projet Système (PCSEA))
                ˆ saupoudré de: systèmes parallèles et distribués,
                  réseaux, Rust, . . .
                ˆ Dans le passé: théorie des codes, recherche
                  opérationnelle, Java, C pour les grands
                  débutants, Ada, OpenGl, python, administration
                  des systèmes, etc.
   Recherche mettre rapidement des rectangles dans des boîtes pas
             trop grandes
                ˆ algorithme pour l'ordonnancement de
                  programmes parallèles:
                      ˆ   algorithmes multi-critères, modèles de tâches

                          parallèles, CPU+GPGPU, optimisation des

                          communications.
                                                                          2
Introduction
Systèmes distribués I
   Un ensemble de systèmes informatiques autonomes
   collaborant
     ˆ pas d'horloge globale ! plusieurs horloges
     ˆ gestion du groupe: ouverte ou fermée
     ˆ surcouche du réseau
          ˆ   connaître ses voisins

          ˆ   structurée (arbre, anneau) ou pas (random, pair à pair)

   2 problèmes fondamentaux pour cette collaboration
    1. Asynchronisme: temps d'acheminement des messages
       variables, temps de calcul variables, communication par
       message, communication par RPC.
    2. Défaillances: pannes franches, pannes byzantines.

                                                                        3
Systèmes distribués II
   Ensemble manipulé comme un seul système cohérent
    Middleware entre l'OS et l'application pour répondre aux besoins
    spéciques:
     ˆ communications
     ˆ transaction
     ˆ composition de service
     ˆ abilité
   Pas de solution universelle → nombreux middlewares traitant
   chaque cas
    Théorèmes d'impossibilité: consensus sur réseau non able
    (généraux byzantins), défaillances de plus de la moitié des
    serveurs avec un réseau able, consensus number, etc.
                                                                       4
Systèmes distribués III

   Mise en commun de ressources
    ˆ matérielles : CPU, mémoire, caches, disques, réseaux
    ˆ logiciels, données, puissance de calcul, débit cumulé

   Décomposition en problèmes élémentaires (cf cours d'algo.
   dist.)
     ˆ lecture/écriture atomique sérialisée, snapshot, exclusion
        mutuelle, consensus, etc.

                                                                   5
La tolérance aux pannes est un problème central

   Stockage pérenne
    Only wimps use tape backup: real men just upload their
    important stu on ftp, and let the rest of the world mirror it.   L.T.

   Dénition de Lamport
   A distributed system is one that stops you from getting any work
   done when a machine you've never heard of, crashes.

                                                                             6
Systèmes distribués

   Attention
   Un programme distribué présente de nombreux désavantages!
   D'une manière générale il vaut mieux éviter le recours aux
   programmes distribués.

                                                                7
8 Pièges/Mensonges (Peter Deutsch, Sun Microsystem:
Ghostscript, Implem de Smalltalk ancètre des JVM)

   1.   Le réseau est able
   2.   le réseau est sécurisé
   3.   le réseau est homogène
   4.   la topologie ne change pas
   5.   la latence est 0
   6.   la bande passante est ∞
   7.   le coût de transport est 0
   8.   Il y a un administrateur

                                                  8
Dans ce cours

  Objectif
  ⇒ vers des systèmes à très grande échelle

    ˆ réseaux pair-à-pair: bittorrent, edonkey, gnunet, freenet, etc.
    ˆ calcul distribué orienté performance: boinc, mpi, charm++,
      etc.

  Outils
   ˆ L'intergiciel, dépend de l'application et la plateforme visée
   ˆ Les algorithmes, dépendent du type d'intergiciel, de l'échelle
      visée, et bien sûr du problème.

                                                                        9
Exemple d'intergiciel: BOINC
   ˆ issu de SETI@HOME
   ˆ infrastructure de calcul
   ˆ nombreux autres projets: Collatz Conjecture,
     radioactive@home, docking@home, milkyway@home
 Le 2 octobre 2020: Collatz Conjecture, Einstein@home,
 Milkyway@home, etc.
  Active: 87,146 volunteers, 901,591 computers. 24-hour
  average: 28.371 PetaFLOPS. (rang 6.5 au top500 entre
  HPC5 - Eni (Pétrole italien) et Sélène - NVidia;
 2019
  Active: 135,107 volunteers, 680,580 computers. 24-hour
  average: 28.841 PetaFLOPS. (rang 4.5 au top500 devant
  Frontera (U Texas) et Piz Daint);
                                                           10
Déroulement des séances 2020-2021

    1. Aujourdhui TP: Introduction; Projet: Teide, Gitlab, Grid5000,
       choix de votre plateforme; Introduction à MPI sous forme de
       TP: lancé de rayon distribué (MPI);
    2. 2020/10/20 CM: Asynchronisme (algo. et prog.); évaluation
       de performance; équilibrage de la charge; communications
    3. 2020/11/24 CM: tolérance aux pannes; communications
    4. 2020/12/08 TP: démonstration de votre version parallèle (2.5
       points);
    5. 2020/01/05 TP: démonstration de votre code tournant sur
       G5K + plan d'expériences (2.5 points)
    6. 2021/01/19 CM: présentation/évaluation de votre projet
       devant les autres étudiants (15 points)
                                                                       11
Projet I
   ˆ 8 équipes de 3-4 (3h: 17 min de
     présentation + 5 min de questions, un
     orateur tiré au hasard)
   ˆ implantation, déploiement, éval. de perf.
   ˆ langages / bib. / env. au choix (tous 6=)
   ˆ 2 types de projets:
       1. make distribué

             ˆ compilation
             ˆ blender
       2. évaluation d'un algorithme distribué de

           votre choix (ex. RAFT, ou pris dans

           articles de PODC, PPOPP, IPDPS,

           ICDCS, DISC)

   ˆ Analyse de performances : min. 8 n÷uds
     sur G5K (SILECS)                               12
Grid 5000 (SILECS)
 G5K est un ensemble de grappes de PC
 interconnecté, pour faire de la recherche en
 Informatique (Calcul parallèle, calcul distribué,
 cloud, big data, etc.)
 nombreuses ressources 794 noeuds, 15462
               c÷urs, 176 GPU, 96.63 TiB
               RAM + 6.0 TiB PMEM, 504
               SSDs and 998 HDDs on nodes
               (total: 1.39 PB), 8 sites
 hautement congurable son OS, sa pile
               logicielle, modier le routage, etc.
  monitoring réseaux et énergie
 reproductible research tracabilité de
               l'infrastructure et des logiciels
                                                      13
Un environnement diérent par projet (cf ensiwiki) 1/2
    1. Les environnement de programmation parallèle distribuée:
       (http://open-mpi.org) MPI + C-OpenMP
       (http://openmp.org); MPI + TBB
       (https://www.threadingbuildingblocks.org/ C++);
       Charm++ (https://charmplusplus.org/ C++);
       asyncparallel xor distributed OCaml; Python celery,
       IPythonParallel, DRb Ruby ; Hadoop (Map-Reduce de
       Apache); Apache Spark, Beam, Flink, etc.;

    2. Les languages dédiés: Julia (http://julialang.org); Erlang
       (http://erlang.org); Elixir (http://elixir-lang.org)
       Scala(http://scala-lang.org); Partitionned Glob. Addr.
       Space: Chapel (http://chapel.cray.com); X10
       (http://x10-lang.org); Cloud Haskell
                                                                    14
Un environnement diérent par projet (cf ensiwiki) 1/2

    1. Les objets distribués: RMI (Java, Clojure); DO de Objective-C
       (gnustep); Distributed ADA (polyorb); RPC Go (google)
       (http://golang.org); Apache Thrift (facebook) + (Pas de
       Python ! 14 autres choix); Rust + Tonic (gRPC)
    2. Autres: Zero-MQ; nanomsg (bibliothèque réseau de haut
       niveaux); Simgrid (simulation)

                                                                       15
Lanceurs parallèles pour le déploiement

   Pour lancer vos applications, il faudra être capable de déployer les
   instances sur les machines de grid5000
   Lanceurs parallèles
    Il faut éviter la boucle for séquentielle de ssh qui ne passe pas à
    l'échelle et résiste mal aux pannes:
     ˆ taktuk est le lanceur conseillé (Dispo dans G5K et Debian)
     ˆ ssh-add et taktuk -c "ssh -A"

                                                                          16
Vous pouvez aussi lire