Systèmes Distribués - Ensiwiki
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
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