ASR-UV5 Grilles
Transcription
ASR-UV5 Grilles
Dépt. INF - INT Présentation Bibliographie ASR-UV5 Grilles • Ouvrages : – F. Berman, G. Fox, A. Hey, Grid Computing : Making the Global Infrastructure a Reality, Wiley, 2003 D. Millot [email protected] – I. Foster and C. Kesselman editors. The Grid 2: Blueprint for a New Computing Infrastructure. Morgan Kaufmann, 2004 2009-2010 – J. Nabrzyski, J. Schopf, J. Weglarz, Grid Resource Management: State of the Art and Future Trends, Kluwer, 2004 – Special Issue on Grid Computing, Proceedings of the IEEE, Vol 93, No 3, Mars 2005 • URL : http://www-inf.int-evry.fr/∼millot/urlparall.html 2009-2010 Dépt. INF - INT Présentation D. Millot Dépt. INF - INT 2 Présentation Plan du support Objectifs • Introduction – Eléments de contexte – Rappels : modèles de programmation et principaux standards • Dégager les principes d’organisation et de fonctionnement des grilles • Vers le calcul à grande échelle • Savoir mettre en œuvre un environnement de programmation sur une grille – Concept de grille • Évaluer les possibilités offertes par Internet pour le calcul hautes performances, – Exemple de globus 2 • Calcul à grande échelle • Identifier les problèmes posés par le passage à l’échelle induit par l’utilisation d’Internet. – Calcul global : desktop computing – Modèles de programmation pour grille – Services de grille 2009-2010 D. Millot 1 2009-2010 D. Millot 3 Dépt. INF - INT Introduction Dépt. INF - INT Contexte Évolution de la demande • augmentation ininterrompue de la puissance de calcul nécessaire - volume des données à traiter (10 à 50 Go/appli, 2 à 600 Go dans 2 ans) - complexité des données (multimedia...) - qualité des résultats attendus ⇒ plus de données : nombre de paramètres, finesse des maillages... ⇒ plus de calcul : méthodes multi-échelles, multi-physiques, combinaison de méthodes... Introduction • Introduction – Éléments de contexte – Rappels : modèles de programmation et principaux standards • recherche de rationalisation des coûts - machines spécialisées trop chères - utilisation très ponctuelle de grosse puissance de calcul ⇒ tendance à la fédération/mutualisation/externalisation de ressources - coût en énergie excessif • Vers le calcul à grande échelle • Calcul à grande échelle • élargissement du marché - BD parallèles, multimédia, graphique, ... 2009-2010 D. Millot Dépt. INF - INT 4 Contexte 2009-2010 Dépt. INF - INT Le temps révolu des supercalculateurs Contexte • prise en compte accrue du parallélisme au niveau matériel - microprocesseur avec support multiprocesseur - cartes et serveurs multiprocesseurs - processeurs multicœurs, GPU... • plates-formes coûteuses - technologies spécifiques, produites en petites séries - systèmes peu évolutifs - systèmes dédiés à quelques applications seulement • diffusion des technologies hautes performances - microprocesseurs puissants - liens de communication rapides • une mise en œuvre difficile - approche différente de la programmation - pas/peu de portabilité entre machines de même type - aucune portabilité entre machines de types différents • évolutions générales liées à Internet et aux logiciels libres - interconnexion généralisée des ressources - progression de l’interopérabilité - standardisation d’environnements parallèles OpenMP (Open specification for MultiProcessing), MPI... • peu de souplesse logicielle - pas/peu de bibliothèques - chaque développement reprend au niveau de l’analyse - calcul scientifique essentiellement D. Millot 6 Moyens disponibles et tendances Dédiés à la niche du calcul scientifique 2009-2010 D. Millot • exploitation industrielle d’applications parallèles - google, AOL, Météo France, Dreamworks, Pixar, George Lucas... 5 2009-2010 D. Millot 7 Dépt. INF - INT Contexte Dépt. INF - INT Comment exploiter ces architectures multiprocesseur ? Les architectures des années 2000 • cluster (grappe) : ensemble (a priori homogène) de stations de travail sur un réseau local, éventuellement interconnectées par un réseau haut débit, utilisées globalement comme une ressource de calcul unique • Poursuivre les objectifs traditionnels du parallélisme : – Faire contribuer aux traitements toutes les ressources utilisées – Minimiser les périodes d’inactivité – Maximiser l’efficacité • grid (grille) : ensemble (a priori hétérogène) de ressources de calcul administrées indépendamment et reliées par Internet, dont l’usage est à la fois soumis à une autorité de certification et coordonné • Problèmes à résoudre pour le programmeur : – Opter pour une approche par les traitements ou par les données – Découper les traitements et/ou les données ⇒ définir les tâches à assigner aux processeurs • desktop grid : ensemble (a priori hétérogène) de PCs reliés par Internet participant de façon sporadique au partage de la fourniture d’un service – Assigner les lots aux différents processeurs/cœurs – Coordonner les traitements – Concilier performance des traitements et confort d’utilisation ⇒ parallélisme explicite vs implicite • cloud : est à l’infrastructure ce que le SaaS est aux applications 2009-2010 D. Millot Dépt. INF - INT 8 Contexte 2009-2010 10 Contexte Différentes formes de parallélisme • Parallélisme de contrôle Faire plusieurs choses à la fois - association : ressources de calcul ↔ tâches indépendantes - concurrence : taille des antichaînes maximales (6= parallélisme réalisé) • Donner accès à un maximum de ressources (cpu, ram, disques...) ⇒ constituer des architectures virtuelles par interconnection de ressources exploitables individuellement par ailleurs : – PCs + réseau haut débit → grappe • Parallélisme de données Répéter une même action sur des données similaires - association : ressources de calcul ↔ données - un seul flot de contrôle – grappes + Internet → grille – PCs + Internet → desktop grid • Simplifier au maximum l’utilisation ⇒ utiliser ces ressources fédérées comme une ressource unique : • Parallélisme de flux Travailler à la chaîne - association : ressources de calcul ↔ étapes de calcul - recouvrement des étapes – grappe : système à image unique (Kerrighed, Mosix...) – grille : authentification unique, portail... D. Millot D. Millot Dépt. INF - INT Objectifs de l’usage de ces architectures 2009-2010 Contexte 9 2009-2010 D. Millot 11 Dépt. INF - INT Contexte Dépt. INF - INT Différents choix possibles pour l’expression du parallélisme Contexte Directives de compilation • Types de langages Fragment de code séquentiel : – langages dédiés parallélisme (Ada, Occam) for (i=0;i<N;i++) A[i]=b[i]*b[i+1]; for (i=0;i<N;i++) c[i]=A[i]+A[i+1]; – extensions de langages séquentiels (C, Fortran, java) • Approches de programmation (liées au modèle d’architecture) – données parallèles vs processus parallèles Equivalent en OpenMP : – EAU vs EAM (shared variables vs message passing) #pragma omp parallel private(i), shared(A,b,c) { #pragma omp for for (i=0;i<N;i++) A[i]=b[i]*b[i+1]; #pragma omp for for (i=0;i<N;i++) c[i]=A[i]+A[i+1]; } – SPMD vs MPMD (1 seul code vs plusieurs codes, séq ou par) • Types de chaîne de production (avec ou sans nouveau compilateur) – nouvelles constructions dans le langage ⇒ vérification exhaustive – directives de compilation ⇒ OK pour compilateur séquentiel – fonctions de bibliothèques (MPI, Pthreads, ...) 2009-2010 D. Millot Dépt. INF - INT 12 Contexte 2009-2010 D. Millot Dépt. INF - INT Nouvelles constructions dans le langage 14 Contexte Bibliothèques Exemple de fragment de code séquentiel : Fragment de code séquentiel : for (i=0;i<N;i++) A[i]=b[i]*b[i+1]; for (i=0;i<N;i++) c[i]=A[i]+A[i+1]; for (i=0;i<N;i++) A[i]=b[i]*b[i+1]; for (i=0;i<N;i++) c[i]=A[i]+A[i+1]; Equivalent utilisant une bibliothèque : nouvelles constructions ⇒ nouveau compilateur id = my_process_id(); p = number_of_processes(); for (i=id;i<N;i=i+p) A[i]=b[i]*b[i+1]; barrier(); for (i=id;i<N;i=i+p) c[i]=A[i]+A[i+1]; Code Fortran 90 équivalent, avec opérations sur les tableaux : A(0:N-1)=b(0:N-1)*b(1:N) c(0:N-1)=A(0:N-1)+A(1:N) 2009-2010 D. Millot 13 2009-2010 D. Millot 15 Dépt. INF - INT Modèles de programmation Dépt. INF - INT Modèle data-parallel Modèle de programmation data-parallel Modèles pour la programmation d’architectures multiprocesseur • caractéristiques – flot de contrôle unique ⇒ programmation séquentielle • Modèle séquentiel, parallélisme extrait automatiquement Parallélisation (SMP)/vectorisation (vectoriel/SIMD) ⇒transformations de programmes – structures de données/opérations parallèles – opérations de réduction (combinaison à résultat scalaire) – programme = séquence d’opérations usuelles/parallèles • Modèle de programmation data parallel (natif sur SIMD) • un standard de fait : HPF (High Performance Fortran) • Modèles à flots de contrôle multiples - Modèle shared variables (natif sur SMP = SM-MIMD) - Modèle de programmation message passing (DM-MIMD) - Modèle de programmation BSP – compilation avec insertion par le compilateur d’instructions : - de synchronisation pour les SMP - de transfert de données en cas de mémoire distribuée – maîtrise de la distribution des données (cf règle owner computes) - DISTRIBUTE, ALIGN : découpage en lots, répartition et alignement des données • Modèles de calcul à grande échelle 2009-2010 D. Millot Dépt. INF - INT 16 Parallélisation automatique 2009-2010 D. Millot Dépt. INF - INT 18 Modèles à flots de contrôle multiples Modèles à flots de contrôle multiples Parallélisation automatique de codes FORTRAN Le programmeur gère explicitement des flots de contrôle Vectorisation versus Parallélisation • Modèles de programmation similaire au multitâche (temps partagé), les processus étant exécutés par des processeurs différents Recherche d’actions (instructions ou séquences) indépendantes dans les nids de boucles (ensemble de boucles imbriquées)... • distinction tâche (ou processus) vs fil d’exécution (ou thread) : tâche : à la fois unité d’allocation de ressources et unité d’exécution thread : unité d’exécution seulement • Vectorisation : code “scalaire” → code “vectoriel” spatialisation du parallélisme ⇒ tableau 1D = vecteur boucles les plus internes → instructions vectorielles ⇒ exploitation d’un parall. à grain fin sur archi. vectorielle • primitives de manipulation de processus : - gestion : création, destruction, suspension, ... - interaction : communication, synchronisation • Parallélisation : code “scalaire” → code “parallèle” boucles les plus externes → processus parallèles ⇒ exploitation d’un parall. à grain moyen/gros sur MIMD 2009-2010 D. Millot • parallélisme statique (blocs ou boucles parallèles) ou dynamique • création de processus statique vs dynamique • mise en parallèle structurée ou non (parbegin/parend, fork/join) 17 2009-2010 D. Millot 19 Dépt. INF - INT Modèle shared variables Dépt. INF - INT Le standard OpenMP Modèle shared variables • modèle proposé pour les architectures EAU (SMP, CC-NUMA) - facilite le portage d’applis (séquentielles vers EAU, entre OS/EAU) - multi-langage, multi-plateforme et indépendant du constructeur Partage d’une partie de l’espace d’adressage par les différents flots de contrôle (process ou threads) qui disposent de données privées et de données partagées (modèle natif des SMP, disponible aussi en DSM) • ensemble de directives de compilation (pragma C), une bibliothèque de fonctions et des variables d’environnement permettant de : - spécifier du parallélisme d’exécution (de type parbegin/parend) avec répartition possible des itérations d’une boucle - gérer les variables (privées ou non) pour les threads - spécifier des synchronisations entre threads - contrôler l’exécution (nombre de threads, scheduling, ...) • déclaration explicite des variables partagées • partage de données ⇒ exclusion mutuelle ⇒ sections critiques (sémaphores), moniteurs de Hoare • dépendances ⇒ synchronisations ⇒ barrières • possibilité de gestion des flots de contrôle : - explicite (Pthreads, par exemple) ou - implicite (OpenMP) 2009-2010 • contrôle d’exécution possible - statiquement : variables d’environnement - dynamiquement : fonctions de bibliothèque D. Millot Dépt. INF - INT 20 Modèle shared variables 2009-2010 D. Millot Dépt. INF - INT 22 Modèle shared variables Modèle PGAS (Partionned Global Address Space) Threads POSIX Modèle multi-flot SPMD où chaque thread dispose de mémoire privée (locale) et de mémoire partagée (locale (cf affinité) ou distante) Standard IEEE : fonctionnalités et interface similaires à celles des threads Solaris, qui ne spécifie pas le type de thread, i.e. user ou kernel (vrai parallélisme possible uniquement avec un système “multi-threadé”) – C → UPC (Unified Parallel C), testé sur BG/L (> 105 cpus) – Fortran 90 → CAF (Co-Array Fortran) • gestion des threads (de type fork/join) – java → Titanium, X10 – pthread_create, avec attributs fixant les modalités d’exécution – pthread_exit, pthread_join • partitionnement des tableaux déclarés shared entre les threads (round-robin, avec facteur de bloc de 1 par défaut) • synchronisation des threads • partage des itérations d’une boucle upc_forall selon l’affinité – pthread_mutex_init/destroy, pthread_mutex_lock/unlock, pthread_mutex_trylock • spécification explicite globale ou locale du modèle de cohérence mémoire (strict/relaxed), locks, barrières de synchronisation – pthread_cond_init/destroy, pthread_cond_wait, pthread_cond_signal, pthread_cond_broadcast 2009-2010 Modèle shared variables D. Millot L’explicitation permet au compilateur de procéder à des optimisations 21 2009-2010 D. Millot 23 Dépt. INF - INT Programmation de grappes Dépt. INF - INT Modèle de programmation pour les grappes La bibliothèque PVM en bref • Mémoire partagée : • identification et contrôle des processus – facile à utiliser, mais scalable physiquement seulement pour quelques dizaines (jusqu’à une centaine ?) de processeurs (SMP) – pvm_mytid, pvm_parent, pvm_spawn • communication – difficile à implanter efficacement par logiciel (SSI) – pvm_send, pvm_mcast, pvm_recv, pvm_nrecv, pvm_probe – surtout utilisable quand il existe un dispositif matériel de partage (architecture SMP, réseau SCI, ...) • gestion explicite de tampons • Réseaux standards : – pvm_initsend, pvm_pk*, pvm_upk*, pvm_bufinfo – font plutôt de l’envoi de messages ∗ en local : Myrinet, FastEthernet, ... ∗ à grande échelle : TCP/IP protocole de transfert de messages • gestion et communication de groupes de processus – pvm_joingroup, pvm_lvgroup, pvm_bcast, pvm_barrier • configuration de la machine virtuelle • Modèles de programmation parallèle les plus utilisés sur grappe : – pvm_config, pvm_addhosts, pvm_delhosts – pour l’instant, plutôt ceux basés sur l’envoi de messages 2009-2010 Modèle message passing D. Millot Dépt. INF - INT 24 Modèle message passing 2009-2010 D. Millot Dépt. INF - INT 26 Modèle message passing La bibliothèque MPI en bref Bibliothèques de Message Passing • initialisation/terminaison, identification – MPI_Init, MPI_Comm_size, MPI_Comm_rank, MPI_Finalize Programmation de type MPMD/SPMD en C/Fortran • communication Fonctionnalités communes aux bibliothèques : – MPI_Send, MPI_Recv et non bloquant MPI_Isend, MPI_Irecv, MPI_Wait, MPI_Wait_any, MPI_Wait_some • initialisation/finalisation de l’utilisation de la bibliothèque • communications collectives • identification et contrôle des processus – MPI_Barrier, MPI_Bcast, MPI_Gather, MPI_Scatter, MPI_Reduce • routines de communication point à point (send/receive, put/get) • gestion de groupes de processus (statiques/dynamiques) • création de topologies logiques et repérage – MPI_Graph_create, MPI_Cart_create, MPI_Cart_coords, ... • communications collectives • gestion de contextes de communication Bibliothèques génériques : PVM, MPI 2009-2010 D. Millot – MPI_Comm_create, MPI_Comm_split, MPI_Comm_free 25 2009-2010 D. Millot 27 Dépt. INF - INT Modèle de programmation BSP Dépt. INF - INT Vers le calcul à grande échelle Modèle de programmation BSP • modèle multi-flot SPMD, avec mémoire locale, mécanismes de synchronisation globale et d’accès aux données non locales Vers le calcul à grande échelle • modèle intermédiaire entre synchrone et asynchrone • pas d’interférence sur les données au sein d’un super-pas • la fin d’un super-pas garantit la fin des accès distants • Introduction • primitives essentielles (bibliothèques C/FORTRAN) : – démarrage/terminaison de copies parallèles • Vers le calcul à grande échelle – Concept de grille ∗ bsp_begin, bsp_end – Exemple de globus 2 – barrière de synchronisation globale • Calcul à grande échelle ∗ bsp_sync – lecture/écriture distante ∗ bsp_get, bsp_put 2009-2010 D. Millot Dépt. INF - INT 28 Modèles à flots de contrôle multiples 2009-2010 Dépt. INF - INT Vers le calcul à grande échelle Utilisation combinée de différents modèles de programmation pour des raisons matérielles et logicielles MPI-2 : extension du modèle de programmation par messages, avec plus de souplesse et de robustesse • au niveau matériel - architectures hybrides pour lesquelles on n’a pas de modèle de programmation natif → interconnection de clusters de multiprocesseurs multi-cœurs avec accélérateurs (GPU, Cell...) • primitives one-sided d’accès distant (put/get de BSP) • gestion dynamique de processus (spawn de PVM) SPMD ou MPMD, établissement dynamique de connexions • prise en compte explicite des threads → intégration de threads OpenMP • au niveau logiciel - une même application peut souvent exploiter différentes sources de parallélisme donc utiliser plusieurs modèles de programmation - interopérabilité à travers TCP/IP • entrées-sorties parallèles primitives d’IO collectives, motifs d’accès, optimisation Des outils existent, mais pour l’instant mise en œuvre essentiellement manuelle (gestion de la liste des ressources, installation des binaires...) OpenMP-3 : introduction des tâches D. Millot 30 Hybridation/méta-computing Vers une synthèse ? 2009-2010 D. Millot 29 2009-2010 D. Millot 31 Dépt. INF - INT Vers le calcul à grande échelle Dépt. INF - INT Vers le calcul à grande échelle Calcul distribué à grande échelle Émergence du calcul à grande échelle Utilisation de la puissance de machines reliées par l’Internet Deux types de systèmes distribués de calcul à grande échelle • Des réalisations effectives : • Grilles de calcul → centres de calcul virtuel – couplage de codes : simulations multi-physiques, visualisation... – serveurs de calcul en ligne : Netsolve, NINF, DIET – grands centres de calcul, clusters, réseaux haut débit, QoS... – récupération de périodes d’inactivité → global/Internet computing : SETI@home, decrypthon – moins de 100 nœuds stables – identification individuelle ⇒ confiance – partage de ressources → pair-à-pair (chaque machine est client et serveur) : Gnutella... • Internet computing (Desktop grid) et systèmes pair-à-pair – communauté importante et fluctuante de PC linux ou windows • Normalisation déjà bien avancée pour les grilles : OGSA, WSRF – plusieurs dizaines de milliers de nœuds volatiles • Recherche active sur le “calcul global” – pas d’authentification ⇒ pas de confiance – pas vraiment de modèle bien arrêté : Xtrem Web (LRI) ? 2009-2010 D. Millot 32 Dépt. INF - INT Vers le calcul à grande échelle 2009-2010 D. Millot Dépt. INF - INT 34 Grilles D’où viennent les grilles ? Grands systèmes parallèles et distribués Fondamentalement de la rencontre entre : s pg skt o Grands systèmes distribués De ille Gr au d rid es tat Roadrunner www.research.ibm.com Ré se e app Gr architectures plutôt homogènes 2009-2010 • des besoins - le supercalcul : applis scientifiques traditionnelles - de nouveaux besoins : A3xx, LHC (15 Po/an)... - de nouvelles exigences : volume et complexité des données, qualité des résultats, temps de réponse... ion èle all par ne chi Ma Systèmes massivement parallèles • et des moyens... - le phénomène PC : standard de fait, puissance accrue, prix réduit, mise en réseau local - Internet : interconnexion généralisée des ressources, standard ouvert pour communiquer (IP), partage de ressources - le logiciel libre : ouverture (FSF), émergence et respect des standards, garantie d’interopérabilité architectures plutôt hétérogènes BOINC http://boinc.berkeley.edu • 122K cores, 98 To mémoire • 565K machines • 1.02 Pflop/s soutenu • de l’ordre de 800 Tflop/s D. Millot 33 2009-2010 D. Millot 35 Dépt. INF - INT Grilles Dépt. INF - INT Grilles Besoins communs des grilles Grilles = systèmes distribués à grande échelle ? • Système d’information • Des problèmes génériques et spécifiques – données et applications disponibles, matériels utilisables – hétérogénéité machine/réseau/système/... – accès à des ressources de différents domaines d’administration • Système de description des travaux – volatilité de certaines ressources • Système de lancement des travaux sur des sites distants – nouveaux modèles à définir pour l’écriture des programmes – interrogation de bases de données, exécution de programmes • Des environnements dédiés aux grilles • Système de gestion des tâches – Globus, Legion, Unicore, gLite... – suivi, transfert des données, récupération des résultats • Différents types d’usage des grilles • Système assurant une sécurité minimale – calcul, données, information 2009-2010 – authentification, négociation des autorisations D. Millot Dépt. INF - INT 36 Grilles 2009-2010 D. Millot Dépt. INF - INT 38 Globus 2 Le projet globus Différents usages des grilles • Grille Haute Performance (analogie : power grid) • premières expérimentations en 1995 (projet I-WAY) – agrégation de puissance de calcul et de capacité de stockage • objectifs initiaux : • Grille d’entreprise (intragrille) – recherche : compréhension des besoins des applications vis-à-vis des grilles → architecture en couche et protocoles – rationnalisation de l’utilisation de l’outil informatique, communication, coopération – développement : technologies requises et outils de haut niveau → globus toolkit • Grille d’entreprises – vente ou échange de temps de calcul – prototypage : construction d’une plate-forme de test à grande échelle → plate-forme GUSTO (1997-98) • Portail thématique – partage de connaissances et savoir faire dans une communauté • contributeur important d’une évolution vers les services : Open Grid Service Architecture (OGSA) Point commun : → utilisation transparente de ressources distantes hors contrôle 2009-2010 D. Millot 37 2009-2010 D. Millot 39 Dépt. INF - INT Globus 2 Dépt. INF - INT Boîte à outils globus Rôles des machines dans une grille globus • infrastructure logicielle permettant aux applications d’utiliser comme une unique machine virtuelle un ensemble de ressources de calcul distribuées hétérogènes administrées indépendamment ⇒ “grid OS” Le fonctionnement de globus repose sur deux types de machines : • machine ressource de la grille (serveur) – en attente de demande de service (gatekeeper du GRAM) • ensemble de services utilisables ± indépendamment et organisés en couches : – mapping des demandes de service sur un user local – services de haut niveau proposés au niveau global de la grille – exécution d’un serveur GRIS pour contribuer au MDS – services de bas niveau implantés localement sur chaque ressource – autres services éventuels : GridFTP, GIIS, • machine point d’accès à la grille (client) • pas de structure administrative hiérarchique (± pair-à-pair) – demande (puis hébergement) de certificat d’utilisateur • une implémentation grille de MPI : MPICH-G2 – authentification ⇒ mise en place d’un proxy (single sign-on) • free software depuis nov 98 (V 1.0), actuellement GT4 I. Foster, C. Kesselman (Argonne) 2009-2010 Globus 2 D. Millot Dépt. INF - INT – lancement de commandes/jobs... 40 Globus 2 2009-2010 D. Millot 42 Dépt. INF - INT Globus 2 Principaux services proposés par globus 2 Traitement d’une requête par globus • authentification unique, certificats → Grid Security Infrastructure • spécification des ressources → Resource Specification Language GRAM MDS reporter GIIS • localisation des ressources → Metacomputing Directory Service • allocation des ressources → Globus Resource Allocation Manager user jobmanager proxy GSI process proxy • surveillance → Heartbeat et Network performance monitors requete création gatekeeper Essentiellement trois groupes de composants : gestion de ressources (GSI, GRAM, DUROC), service d’information (MDS sur 2 niveaux : GRIS et GIIS), et gestion des données (GASS, GridFTP) D. Millot ... authentification • accès aux données distantes → Global Access to Secondary Storage 2009-2010 enregistrement process • co-allocation → Dynamic Updating Resource On-line Co-allocator Accès 41 2009-2010 process GridFTP Ressources D. Millot 43 Dépt. INF - INT Globus 2 Dépt. INF - INT Mise en place des certificats Grid Security Infrastructure (GSI) • Demande de certificat grid-cert-request [-service nomService -host FQDN] → création de trois fichiers : XXXcert_request.pem, XXXcert.pem (vide), XXXkey.pem Cette infrastructure de sécurité : • maintient la sécurité à travers les frontières d’organisations (i.e. domaines d’administration) • Validation d’un certificat par le CA grid-ca-sign -in XXXcert_request.pem -out XXXcert.pem • offre des communications sûres entre composants de la grille Elle repose sur la cryptographie à clé publique : • Mise en place des certificats • certificats X509 établis par un CA (Certification Authority) – machine : /etc/grid-security • authentification mutuelle – service : /etc/grid-security/ldap – utilisateur : $HOME/.globus (créé lors de la demande) • signature unique, délégation avec une chaîne de confiance • Renouvellement de certificat grid-cert-renew ⇒ une grille = un CA ! 2009-2010 D. Millot Dépt. INF - INT 44 Globus 2 2009-2010 D. Millot Dépt. INF - INT Certificats au format X509 46 Globus 2 Mapping des utilisateurs Chaque participant à la grille dispose d’une paire de clés (publique, privée protégée par passphrase) et d’un certificat au format normalisé X509 reconnu par les navigateurs web et comportant : Après authentification de son certificat par une ressource, les commandes de l’utilisateur sont exécutées sous une identité locale • mapping des certificats sur des comptes locaux • le sujet (utilisateur, hôte ou service) représenté par le certificat • maintien du mapping par l’administrateur globus • la clé publique appartenant au sujet • exemple de fichier grid-mapfile : • une durée de validité "/O=GET/OU=GrillePoet/OU=simpleCA-augite.int-evry.fr/OU=intevry.fr/CN=xerxes globus user" globus "/O=GET/OU=GrillePoet/OU=simpleCA-augite.int-evry.fr/OU=intevry.fr/CN=Compte travail CNG" cng "/O=GET/OU=GrillePoet/OU=simpleCA-augite.int-evry.fr/OU=intevry.fr/CN=Compte local D. Millot" invite • l’identité de l’autorité de certification (CA) • la signature numérique du CA Le lien entre le sujet et la clé publique est certifié par le CA, autorité de confiance, au moyen d’une signature par sa clé privée. Pour pouvoir utiliser une ressource distante, un utilisateur doit de plus être associé à un compte utilisateur sur l’hôte correspondant. 2009-2010 Globus 2 D. Millot 45 2009-2010 D. Millot 47 Dépt. INF - INT Globus 2 Dépt. INF - INT Session globus Globus 2 Démarrage d’une application MPICH-G2 • Paramétrage : définir $GLOBUS_LOCATION, compléter le PATH mpirun locates hosts MDS globusrun stages executables GASS • Gestion du proxy : – grid-proxy-init, grid-proxy-info, grid-proxy-destroy • Test d’accessibilité de ressources : – globusrun -a -r augite authenticates DUROC coordinates startup • Exécution d’application : detects termination fork • Fichiers de log : PBS LSF monitors/controls – $GLOBUS_LOCATION/var/globus-gatekeeper.log P0 – ∼mapping_account/gram_job_mgr_xxx.log D. Millot Dépt. INF - INT 48 Globus 2 2009-2010 P1 P2 P3 P4 P5 D. Millot Dépt. INF - INT MPI sur globus : MPICH-G2 50 Globus 2 Optimisation des communications avec MPICH-G2 Différents modes de communication inter-processus avec des performances très différentes : - à l’aide d’une bibliothèque MPI propriétaire optimisée, - au niveau TCP à travers globus (SAN, LAN, WAN). ⇒ en tenir compte pour réaliser les opérations collectives et/ou organiser les communications entre processus d’une application • MPICH (Argonne) : – implémentation portable de MPI (paramétrée par un device) – ADI (Abstract Device Interface) ∗ macros et fonctions permettant l’implémentation de l’API MPI ∗ une partie générique ∗ une partie propre au type de réseau (device) s’appuyant éventuellement sur l’API Channel Interface de niveau inférieur • Chaque noeud a une profondeur de topologie (différents réseaux accessibles) et une couleur pour chaque niveau – un portage de MPICH = une implémentation de la partie propre pour un device particulier • Accès à ces informations sous forme d’attributs de communicateurs (MPICHX_TOPOLOGY_DEPTHS, MPICHX_TOPOLOGY_COLORS) • MPICH-G2 : 2009-2010 GRAM initates jobs – mpirun -machinefile monFichier monExecutable 2009-2010 GRAM GRAM – globus-job-run augite /bin/hostname – device = globus2 dédié à l’exploitation de grilles globus • Utilisation par la bibliothèque pour les opérations collectives – nouvelles options de mpirun : -stage, -dumprsl, -globusrsl • Construction de communicateurs appropriés (MPI_Comm_split) D. Millot 49 2009-2010 D. Millot 51 Dépt. INF - INT Globus 2 Dépt. INF - INT Globus 2 Profondeur et couleurs d’une topologie MPICH-G2 Cluster 1 IBM SP 0 2 Authentification d’un certificat SITE B SITE A 4 6 WAN 1 3 5 Chaque partenaire potentiel a un certificat de sa clé publique signé par le CA choisi, et dispose également de la clé publique du CA Cluster 2 LAN 7 8 9 10 11 1111 0000 0000 1111 hash résumé Rank 0 1 2 3 4 5 6 7 8 9 10 11 Depth 4 4 4 4 3 3 3 3 3 3 3 3 WAN 0 0 0 0 0 0 0 0 0 0 0 0 Colors LAN 0 0 0 0 1 1 1 1 1 1 1 1 SAN 0 0 0 0 1 1 1 1 2 2 2 2 vMPI 0 0 0 0 2009-2010 D. Millot Dépt. INF - INT sujet clé publique durée identité CA sujet clé publique durée identité CA signature CA signature CA encryptage par clé privée CA Signature du certificat par le CA 52 Globus 2 2009-2010 11111 00000 00000 11111 00000 11111 ? hash résumé résumé décryptage par clé publique CA Vérification du certificat D. Millot Dépt. INF - INT 54 Globus 2 Problèmes essentiels du passage à la grille de MPI Authentification mutuelle dans globus • Assurer les communications entre domaines différents : Globus utilise le protocole d’authentification mutuelle de SSL / TLS : – au démarrage, à la terminaison de l’application – pour les échanges de messages pendant l’exécution • authentification de A par B : – A transmet son certificat à B qui l’authentifie en vérifiant la signature électronique du CA (en utilisant la clé publique du CA) • Franchissement des pare-feux ⇒ GLOBUS_TCP_PORT_RANGE "min max" – B génère un message aléatoire et le transmet à A • Routage pour les nœuds d’une grappe (adresses IP privées) – A encrypte le message avec sa clé privée et le retourne à B – problèmes liés au manque d’IP publiques, à la réticence à l’exposition, à l’effort nécessaire lors de reconfigurations – B doit pouvoir décrypter le message avec la clé publique de A • authentification de B par A : – PACX-MPI (démons en mode user), NAT-based (NAT en sortie, démons en entrée), RSIP (Realm-Specific IP) alternative à NAT 2009-2010 D. Millot – en cas de succès, la même opération a lieu en sens inverse 53 2009-2010 D. Millot 55 Dépt. INF - INT Globus 2 Dépt. INF - INT Sécurisation des communications et des clés Délégation Création par un proxy P1 d’un proxy P2 sur une ressource distante, i.e. une autre ressource que la machine d’accès : Globus permet à l’utilisateur de choisir les garanties apportées : • Intégrité assurée • une paire de clés est générée sur le serveur distant pour le proxy P2 à créer sur cette machine – par défaut, cryptage du hash du message ⇒ garantie d’intégrité, i.e. garantie de non-modification (overhead négligeable et supprimable) • une demande de certificat de proxy est générée et adressée par le serveur au proxy P1 (initialement, celui de la machine d’accès) • Confidentialité possible – communications non encryptées par défaut • le proxy P1 signe le certificat et le retourne au serveur – possiblité d’encryptage du message entier ⇒ overhead important • le serveur stocke le certificat du proxy P2 (en général sous /tmp) Mise en place d’une chaîne de confiance • Sécurisation des clés • permet aux processus distants créés de proche en proche d’agir pour le compte de l’utilisateur (accès à des fichiers, etc) – le fichier contenant la clé privée est encrypté (pass phrase) 2009-2010 D. Millot Dépt. INF - INT 56 Globus 2 2009-2010 58 Globus 2 Metacomputing Directory Service (MDS) Système hiérarchique qui repose sur : L’authentification est déléguée à un proxy à durée de vie limitée • des serveurs au niveau local (un par ressource) : Grid Resource Information Service (GRIS) → maintient des informations sur la capacité et l’état courant de la ressource : nœuds de calcul, systèmes de stockage, liaisons réseaux, bases de données, ... (“pages blanches”) • création d’un proxy (commande grid-proxy-init) : – génération d’une paire de clés (privée, publique) – certificat contenant la clé publique créé, signé par la clé privée de l’utilisateur (utilisation validée au moyen de la pass phrase) – stockage dans un fichier protégé en lecture sous /tmp • des serveurs d’agrégation : Grid Index Information Service (GIIS) → fournit une image cohérente à un niveau plus global (un site, par exemple), et un mécanisme d’identification des ressources qui satisfaisont certains critères (“pages jaunes”) • utilisation du proxy : – la ressource distante reçoit les certificats proxy et utilisateur – la clé publique du CA est utilisée pour valider le certificat de l’utilisateur en vérifiant sa signature Coopération entre les différents éléments de l’infrastructure : – la clé publique de l’utilisateur est ensuite utilisée pour valider le certificat du proxy en vérifiant sa signature D. Millot D. Millot Dépt. INF - INT Signature unique, chaîne de confiance 2009-2010 Globus 2 • authentification mutuelle entre GRIS et GIIS • authentification mutuelle entre GIIS de différents niveaux 57 2009-2010 D. Millot 59 Dépt. INF - INT Globus 2 Dépt. INF - INT Globus 2 Exemple de jobmanager : pbs Architecture de gestion des ressources (GRAM/DUROC) • gestion locale de chaque ressource : GRAM - gatekeeper : équivalent de inetd, - jobmanager (rôle joué par PBS, LSF, Condor, NQE, ...) : évaluation de la requête et allocation effective, - reporter : mise à jour du MDS • gestion de files d’attente de jobs (queues) • fonctionnement maître-esclave • Trois types de démon : • co-allocation (coordonnation au niveau global) : DUROC - raffinement et soumission des subjobs aux GRAMs locaux - barrière de synchro pour assurer l’atomicité du démarrage – serveur : contrôle la soumission et l’exécution des jobs – scheduler : ordonnance les jobs – mom : démon local sur chaque noeud responsable du démarrage et de la terminaison des jobs Deux modes d’interaction : • lancement interactif • commandes dédiées : qsub, qdel, qstat, pbsnodes, qmgr, pbsdsh globus-job-run localhost:2345/jobmanager-pbs /bin/date • soumission par scripts (pbsdsh/mpirun) • lancement en batch globus-job-submit ’contact’ ’requête RSL’ 2009-2010 D. Millot Dépt. INF - INT 60 Globus 2 2009-2010 Dépt. INF - INT Traitement par un GRAM de la soumission d’un job Globus 2 Langage de spécification de ressources inspiré des filtres ldap : • authentification par le gatekeeper, puis • valorisation d’attributs sous la forme de relations (attribut=valeur) destinées au GRAM et/ou au DUROC (resourceManagerContact, subjobStartType, ...) • mapping de l’utilisateur et vérification des droits, • transmission de la requête RSL à un gestionnaire de job, • notation préfixée d’opérateurs sur des requêtes ou des relations • analyse de la requête par ce gestionnaire (jobmanager), • requête : conjonction (&) ou disjonction (|) de relations • interfaçage avec l’ordonnanceur local qui crée les processus, • multi-requête pour DUROC : introduite par l’opérateur + • gestion de l’exécution par le jobmanager qui peut se terminer avec le job, & (executable = a.out ) (directory = /home/nobody ) (arguments = arg1 "arg 2") (count = 1) • stockage des sorties dans un cache géré par le GASS, • avertissement par le jobmanager des changements d’état du job D. Millot 62 Langage RSL de globus L’émission d’une requête vers une machine cible implique : 2009-2010 D. Millot 61 2009-2010 D. Millot 63 Dépt. INF - INT Globus 2 Dépt. INF - INT Globus 2 Gestion des replica Global Access to Secondary Storage (GASS) Pour utiliser directement les primitives de lecture/écriture de la bibliothèque standard sur des fichiers distants et les redirections : Pour faciliter l’accès aux très gros ensembles de données (de l’ordre du peta octet, i.e. 1015 octets) : • espace de noms global pour les fichiers, utilisant la syntaxe des url pour le support de serveurs HTTP, FTP, GASS : http://SERVER-NAME/REMOTE-PATHNAME, ftp://SERVER-NAME/REMOTE-PATHNAME, x-gass://SERVER-NAME:SERVER-PORT/REMOTE-PATHNAME • création de copies partielles ou totales de l’ensemble des données • enregistrement des copies dans un catalogue de répliques • recherche dans le catalogue de copies d’un fichier ou d’un ensemble particulier de fichiers • copie dans un cache local des fichiers ouverts en lecture • sélection du meilleur réplica en fonction de prédictions de performances réseau/stockage à partir d’infos fournies par le MDS • comptage des références pour assurer le vidage du cache • création locale des fichiers ouverts en écriture, recopie sur la destination à la fermeture • contenu d’un catalogue : collections logiques de fichiers, localisations, fichiers logiques (localisations multiples) • mode ajout, avec communication des données dès l’écriture 2009-2010 D. Millot Dépt. INF - INT 64 Globus 2 2009-2010 D. Millot Dépt. INF - INT Globus 2 Packaging de globus GridFTP Outil GPT (Grid Packaging Toolkit) développé par le NCSA. ⇒ regroupement des modules (src/bin) en packages : Extension du standard FTP pour des déplacements de données sûrs et performants dans un environnement grille : • par type d’usage • modes client-serveur usuel et serveur-serveur sous le contrôle d’un tiers (globus-url-copy) – client : pour une machine servant de point d’accès à la grille, – server : pour une machine ressource ou hébergeant des services, • utilisation de plusieurs flots TCP en parallèle – SDK : pour modification de globus, développement d’applications • transfert en parallèle de données éclatées sur plusieurs serveurs • par type de services supportés • transfert de portions de fichiers seulement – Ressource Management : GSI, GRAM, DUROC • réglage manuel ou automatique de la taille des tampons/fenêtres TCP pour optimiser les performances – Data Management : GASS, GridFTP – Information Services : GRIS, GIIS • récupération sur erreur pour gérer les problèmes temporaires de réseaux et/ou serveurs 2009-2010 D. Millot 66 Services annexes : Job Manager Scheduler Support (condor, pbs, lsf) et Reporter Scheduler Support associés, Simple CA, Replica, ... 65 2009-2010 D. Millot 67 Dépt. INF - INT Globus 2 Dépt. INF - INT Globus 2 Déploiement de globus Synthèse sur globus 2 • Point forts • Installation d’une machine (client et/ou serveur) : – Installer GPT – prise en compte effective de l’hétérogénéité – Installer les packages choisis du globus Toolkit – utilisation possible sur différents domaines d’administration – Mettre en place le CA local – extensibilité – Mettre en place sur la machine un certificat hôte (et un certificat pour chaque service utilisé si la machine est un serveur) – dynamicité, adaptabilité • Point faibles – Démarrer les services (machine serveur seulement) – l’utilisateur est responsable de la validité de l’environnement d’exécution, et ses codes vont sans contrôle vers les ressources • Utilisation à partir d’une machine client : – Obtention d’un certificat personnel d’utilisateur auprès du CA, stocké dans un répertoire .globus sous le $HOME de l’utilisateur – “usine à gaz” – Enregistrement dans le grid-mapfile de chaque ressource – pas de standardisation pour l’invocation, la notification, etc 2009-2010 D. Millot Dépt. INF - INT – recours à des technologies hétérogènes 68 Globus 2 2009-2010 D. Millot Dépt. INF - INT 70 Desktop Grids Développements autour de globus Calcul à grande échelle • Environnements de développement – Commodity Grid toolkits (CoG) pour Java, C/C++, Perl, Python – MPICH-G2 • Introduction – IBM Grid Toolbox • Vers le calcul à grande échelle • Projets de recherche et production – EGEE (http://www.eu-egee.org) → gLite • Calcul à grande échelle – Eurogrid (http://www.eurogrid.org) – Calcul global : desktop computing – EU Datagrid (www.eu-datagrid.org) – Modèles de programmation pour grille – GriPhyN (http://www.griphyn.org) – Services de grille – Particle Physics Data Grid (http://www.ppdg.net) 2009-2010 D. Millot 69 2009-2010 D. Millot 71 Dépt. INF - INT Desktop Grids Dépt. INF - INT Desktop grid de calcul distribué à grande échelle Le coordinateur - Récupération de cycles CPU inutilisés de PC volontaires - Plusieurs millions de PC participants • Son rôle : - découpler totalement les clients et les workers - coordonner l’exécution des tâches sur les workers • SETI@home : Search for Extra Terrestrial Intellingence • Ses actions : - accepter les requêtes des différents clients - transférer le code des applications quand c’est nécessaire - distribuer les tâches selon une politique d’ordonnancement - détecter les crashes/déconnections de workers - relancer les tâches avortées sur des workers disponibles - collecter et stocker les résultats - délivrer les résultats aux clients sur requête • BOINC (Berkeley Open Infrastructure for Network Computing) : étude des changements climatiques, LHC@home, etc http://boinc.berkeley.edu • Folding@Home : repliement des protéines http://folding.stanford.edu • Decrypthon : cartographie des protéines http://www.decrypthon.fr/ 2009-2010 D. Millot Dépt. INF - INT 72 Desktop Grids 2009-2010 requests client en reg serveur coordinateur results i en em str d co t e Internet results dispo PC volontaires 2009-2010 params 74 Desktop Grids Calcul global et sécurité • Objectifs de sécurité (Clients/Service/Participants) : - intégrité/confidentialité des données (C) - correction des résultats (C) - intégrité de l’infrastructure (S) - intégrité/confidentialité des ressources utilisées (P) Interactions coordinator-workers : • enregistrement initial ⇒ download du code de l’appli • Sources potentielles de problèmes de sécurité : - les clients qui soumettent des jobs (C) - les participants qui proposent des ressources (cpu, fichiers, etc) (P) - l’infrastructure interconnectant clients et participants (S) - les applications exécutées sur les PC participants (C) • notification de disponibilité ⇒ download des paramètres • retour de résultat D. Millot D. Millot Dépt. INF - INT Exemple type d’organisation de calcul global : XtremWeb applis params Desktop Grids 73 2009-2010 D. Millot 75 Dépt. INF - INT Desktop Grids Dépt. INF - INT Desktop Grids Desktop grid de partage de données à grande échelle Calcul global : les risques Récupération d’espace disque inutilisé de PC volontaires • Stockage et accès aux données stockées sur les PC participants • Risques pour un client (vis-à-vis des participants) : - reverse engineering de son application par un participant - espionnage de ses données, corruption de résultats... • Principe du stockage : – éclatement en segments stockés séparément • Risques pour un participant : - exécution d’autres applications que celles pour lesquelles il s’est inscrit (i.e. usurpation de PC) - abus de ressources par une application (e.g. disque...) – réplication des segments pour augmenter la disponibilité – récupération et intégration des segments depuis différentes sources Projets de recherche - OceanStore (http://oceanstore.cs.berkeley.edu) - Pastis (http://regal.lip6.fr/projects/pastis) • Eléments de solution : - certification de résultat, sandboxing... 2009-2010 D. Millot Dépt. INF - INT 76 Desktop Grids 2009-2010 D. Millot Dépt. INF - INT Desktop grid de partage de fichiers à grande échelle 78 Desktop Grids Calcul : desktop grid vs grille • Partage des données en lecture – les données sont immuables Avantage à l’un ou l’autre selon le critère ⇒ pas de mécanisme de cohérence pour les copies multiples • volatilité des ressources : desktop grid • Stockage des fichiers • protection des ressources : grille (certificats, log, révocation) – les serveurs stockent des fichiers complets • insensibilité à des attaques coordonnées : grille – les clients agissent aussi comme serveur dans une logique pair-à-pair • scalabilité : desktop grid • Accès à un fichier • confidentialité : grille – consultation d’un annuaire centralisé ou non (flooding, DHT) • authentification : grille ⇒ obtention de l’adresse d’un serveur ou de pairs • sécurité des informations (données, résultats) : grille Napster, eMule, Kazaa, ... 2009-2010 D. Millot 77 2009-2010 D. Millot 79 Dépt. INF - INT Desktop Grids Dépt. INF - INT Accès aux données : pair-à-pair vs client-serveur Grid programming Modèles de programmation pour la grille Avantage à l’un ou l’autre selon le critère • nombre d’utilisateurs que le système peut servir : P2P Essentiellement quatre types de modèle pour l’instant. • résistance aux défaillances : P2P (intègre la volatilité) Par niveau croissant d’abstraction : • latence d’accès : client-serveur • Modèles à base de processus séquentiels communicants • débit cumulé : P2P • Modèles à base d’objets distribués • scalabilité : P2P • Modèles à base de composants • cohérence : client-serveur • Modèles à base de services • sécurité : client-serveur 2009-2010 D. Millot Dépt. INF - INT 80 Grid programming Spécificités de la programmation sur grille 2009-2010 Dépt. INF - INT Grid programming Modèles séquentiels augmentés d’un mécanisme d’interaction entre entités distribuées ; trois types d’implémentation : • Shared space (Linda, Javaspaces Jini) - le shared space correspond à une forme d’état global - peut supporter H et D. Pas d’implémentation adressant S. • H : Hétérogénéité (ressources de calcul, données...) • D : Dynamicité (disponibilité, état, comportement...) • I : Incertitude (dynamicité, pannes, état global...) • Message passing (MPI, PVM) - MPI ne supporte ni H ni D, sauf MPICH-G2 de globus (masque H) et MPI-2 (introduit D), ni S car les processus sont supposés fiables - pour I, quelques systèmes supportent la panne (i.e. arrêt) de processus si les communications sont fiables • S : Sécurité et confiance nécessaires (partage à travers des frontières d’organisation...) ⇒ construire des applications capables de détecter (et de réagir à) des changements d’état ⇒ composer des composants autogérables, aux comportements fonctionnel et non-fonctionnel spécifiés indépendamment D. Millot 82 Modèles à base de processus séquentiels communicants Caractéristiques des environnements d’exécution et des applications à prendre en compte pour la programmation sur grille : 2009-2010 D. Millot • RPC - supporte H, mais classiquement pas D ni S 81 2009-2010 D. Millot 83 Dépt. INF - INT Grid programming Dépt. INF - INT Grid programming RPC sur la grille API GridRPC • Gestion de handles de fonctions distantes monitor grpc_function_handle_init, grpc_get_handle server • Appel de fonctions et contrôle d’appels asynchrones agent database grpc_call, grpc_call_async, grpc_probe, grpc_cancel server • Attente de retour d’appels asynchrones ... scheduler grpc_wait, grpc_wait_and, grpc_wait_or, grpc_wait_all, grpc_wait_any call client Plusieurs implémentations : server result • Gridsolve (http://icl.cs.utk.edu/gridsolve) avec des sockets TCP/IP • Ninf-G (http://ninf.apgrid.org) au-dessus de globus Couplage possible avec OpenMP (cf OmniRPC) • DIET (http://graal.ens-lyon.fr/DIET) au-dessus de corba 2009-2010 D. Millot Dépt. INF - INT 84 Grid programming 2009-2010 Dépt. INF - INT Standard émergeant de RPC sur grille : GridRPC Grid programming Interaction sécurisée entre objets distribués à l’aide d’un middleware approprié (e.g. CORBA) • function handle : mapping d’un nom de fonction sur une instance, i.e. un serveur capable d’exécuter la fonction • En plus des communications, support de : - gestion du cycle de vie - localisation/découverte - interaction/synchronisation - sécurité/défaillance • session id : identificateur représentant un appel GridRPC non bloquant ; utilisable pour vérifier l’état de l’appel, l’annuler, attendre sa terminaison, interroger son code d’erreur Modèle de programmation mixte qui autorise à la fois : - parallélisme de tâches au niveau des appels asynchrones - parallélisme de données au niveau des serveurs Problèmes essentiels du RPC sur grille : • support de H, D (liaison tardive au déploiement) et S - gestion des données ⇒ persistance entre les étapes de calcul - scalabilité D. Millot 86 Modèles à base d’objets distribués Un mécanisme RPC dédié à la grille et utilisant deux concepts clé : 2009-2010 D. Millot • couplage fort entre objets interagissant 85 2009-2010 D. Millot 87 Dépt. INF - INT Grid programming Dépt. INF - INT OGSA java pour la grille : Proactive De globus à la grille de services Permet la programmation en java d’applications exploitables à la fois dans un contexte parallèle, distribué et de mobilité Grille : infrastructure (matérielle/logicielle) de partage de ressources pour la résolution de problèmes de façon coordonnée au sein d’organisations virtuelles multi-institutionnelles dynamiques caractérisée par : • active object : 1 thread et plusieurs objets passifs • RMI asynchrones, variables futures avec wait-by-necessity • communications de groupe ⇒ appel de méthode sur un groupe d’objets actifs • l’absence de contrôle et d’administration centralisés • l’utilisation de protocoles et d’interfaces standard, ouverts • migration entre JVM • la fourniture de services de qualité non triviaux • IC2D : Interactive Control & Debug for Distribution : visualisation et gestion du mapping des objets actifs ⇒ ensemble intégré/extensible de services/ressources accessible de n’importe où (virtualisation)... http://www-sop.inria.fr/oasis/ProActive Evolution vers un modèle hiérarchique/dynamique à base de composants Fractal 2009-2010 D. Millot Dépt. INF - INT metacomputing → grille de ressources → grille de services 88 Grid programming 2009-2010 D. Millot Dépt. INF - INT Modèles à base de composants ou de services 90 OGSA Services de grille Convergence des besoins des applications scientifiques et e-business service de grille = instance (persistante ou non) de service à état, • Modèles à base de composants (CCM, JavaBeans) – assemblage de composants réutilisables supportant : – comme Corba, support de H, S et D (instanciation dynamique) mais interfaces et interactions fixées à la compilation • l’invocation fiable et (si nécessaire) sécurisée, • la gestion de la durée de vie, • la notification des changements • Modèles à base de services → une spécification en constante évolution : OGSA, qui s’appuie sur – pour la construction (par composition) de systèmes à couplage lâche et hautement dynamiques • l’expérience du projet Globus • les recherches d’IBM sur l’autonomic computing 2009-2010 D. Millot 89 2009-2010 D. Millot 91 Dépt. INF - INT OGSA Dépt. INF - INT Objectifs d’OGSA (Open Grid Services Architecture) Exemple de l’ordonnancement d’un job • une sémantique unifiée de services de grille (service à état), Etapes d’élaboration et de réalisation de l’ordonnancement d’un job : • des mécanismes standard pour créer, nommer, découvrir des instances de tels services (majoritairement non persistants) • soumission du job (info sur les besoins en tâches, données, réseau) • collecte d’informations statiques sur les ressources • la transparence vis-à-vis de la localisation des services, et leur liaison pour de multiples protocoles • pré-selection de ressources • requête d’infos dynamiques sur les ressources pré-sélectionnées (1) • l’intégration des facilités natives des plates-formes utilisées • requête sur l’accès aux données (disponibilité, ressources réseaux) • la création et la composition facilitées de systèmes distribués sophistiqués • génération d’un ordonnancement et lancement des réservations • la prise en compte de la gestion de la durée de vie, ainsi que la gestion et la notification des changements 2009-2010 D. Millot Dépt. INF - INT OGSA • itération sur (1) en cas d’échec • délégation du suivi du job au superviseur 92 OGSA 2009-2010 D. Millot 94 Dépt. INF - INT OGSA Protocoles nécessaires pour les services de grille Similitude avec les services Web protocole : ensemble de règles utilisées par deux partenaires pour échanger de l’information service : protocole + comportement attendu en réponse aux différents échanges de messages prévus par le protocole Annuaire de service découverte description de service description de service description de service publication Principaux protocoles pour une grille : description de service client • protocoles pour assurer une connectivité sécurisée → authentification, communication • protocoles pour le partage de ressources indépendantes → obtention d’informations, négociation de l’accès, gestion de l’usage D. Millot association Fournisseur de service service service WS : système logiciel à modalités d’utilisation (interfaces publiques/ liaisons) décrites en XML, identifié par URI et supportant l’interaction machine-machine à travers un réseau (web transactionnel) ; assimilable à un processeur de messages... • protocoles d’utilisation coordonnée d’une collection de ressources → co-allocation, réplication de données, gestion de la charge, ... 2009-2010 Demandeur de services 93 2009-2010 D. Millot 95 Dépt. INF - INT OGSA Dépt. INF - INT Web Services Description Language (WSDL) Caractéristiques des services Web service Web : service persistant (assuré par des composants logiciels) accessible par le web et techno-neutre, i.e. indépendant du : Permet la description au niveau fonctionnel d’un service Web dans un format normalisé traitable par une machine en spécifiant : • langage de programmation • un portType : ensemble d’opérations sur des messages (interfaces) • modèle de programmation • la nature du contenu des messages (documents ou requêtes RPC) • système d’exploitation • la structure de ces messages La description d’un service Web (composants logiciels assurant le service, méthodes d’accès et de découverte des fournisseurs du service) est fondée sur les standards Internet (XML) et principalement : • les séquences de messages échangés Ces descriptions ont un double objectif : • SOAP → interaction entre services • permettre aux fournisseurs d’informer directement les clients • WSDL → description fonctionnelle de services • constituer les entrées d’annuaires UDDI • WS-Inspection et UDDI → enregistrement et découverte de services 2009-2010 D. Millot Dépt. INF - INT 96 OGSA 2009-2010 D. Millot Dépt. INF - INT Simple Object Acces Protocol (SOAP) 98 OGSA Web Services Inspection Language (WS-I) Fournit un moyen : Permet l’enregistrement de services dans des répertoires centralisateurs UDDI (Universal Description, Discovery and Integration) à travers : • de formater une invocation de service Web • l’association des différentes sources d’information concernant un service : • d’échanger des messages entre un fournisseur de service et un demandeur de service – descriptions fonctionnelles en WSDL, reposant sur : – références à des entrées de registres UDDI • l’emballage XML d’informations (enveloppe, règles d’encodage) • une grammaire XML facilitant l’aggrégation de références à différents types de documents décrivant des services • une convention de représentation des appels/réponses pour l’invocation distante (RPC) • le référencement et l’utilisation de dépôts de descriptions de services indépendant du protocole de transport (HTTP, FTP, JMS, ...) ...Service Oriented Architecture Protocol ? 2009-2010 OGSA D. Millot ⇒ moyen d’inspecter des sites pour consulter leur offre de services 97 2009-2010 D. Millot 99 Dépt. INF - INT OGSA Dépt. INF - INT Invocation d’un service Web OGSA Architecture de services de grille Modèle proposé par OGSA : annuaire • Un système est constitué à la fois de quelques services persistants et de nombreux services non persistants créés à la demande (beaucoup) UDDI 1. qui sait • Ces services disposent tous à la fois d’un ensemble d’interfaces et de comportements communs conformes aux spécifications de standards (invocation fiable, gestion de la durée de vie, découverte, notification, etc) et de comportements spécifiques. 2. A sait faire ! UDDI faire X ? ? je t’invoque 3. comment WSDL machine cliente serveur 4. lis ça ! • Interfaces dédiées à la gestion des instances de services : Factory (création d’instances de service), Registry (enregistrement), ... A 5. fais X ! Chaque service a un état à la fois consultable et modifiable, et dont les changements peuvent être notifiés ⇒ gestion fiable et sécurisée d’un état distribué du système. SOAP 6. résultat de X ! 2009-2010 D. Millot 100 Dépt. INF - INT OGSA 2009-2010 D. Millot Dépt. INF - INT Implémentation type d’un service Web 102 OGSA Caractéristiques OGSI d’un service de grille • Description d’un service = serviceType (gwsdl, i.e. WSDL étendu) : – définition des interfaces supportées (dont l’interface GridService) et des données HTTP engine/Web server SOAP engine Request transport Response SOAP processing • Interface = portTypes de WSDL + mécanisme d’héritage – un ensemble d’opérations, définies en terme de messages WS container – un ensemble d’attributs ou Service Data Elements (SDE) Service dispatcher • SDE = caractéristiques du service décrites en XML Web service – informations d’état du service, – informations sur la version de l’implantation, Administration & registry services – infos de compatibilité de services en cas de maj d’interfaces, etc • Instance = instantiation adressable de la description du service ⇒ chaque utilisateur peut utiliser des instances différentes 2009-2010 D. Millot 101 2009-2010 D. Millot 103 Dépt. INF - INT OGSA Dépt. INF - INT Interface OGSI d’un service de grille Autres interfaces OGSI de service de grille PortType : GridService Opération Description findServiceData recherche d’infos sur le service → doc WS-I avec GSHs setServiceData modifications de valeurs de SDE requestTermination gestion de la date de terminaison PortType Opération Description Factory createService création d’instance → GSHandle Registry registerService enregistrement de service unregisterService suppression de l’entrée subscribe abonnement aux notifications NotificationSource d’événements (push) d’un service After/Before destroy terminaison NotificationSink deliverNotification récupération d’infos d’état (pull) HandleResolver findByHandle obtention d’une référence (GSR) ServiceGroup add ajout d’entrée à un ServiceGroup remove suppression d’entrée Registration SDE interface, serviceDataName, factoryLocator, gridServiceHandle, Interfaces sans opérations : gridServiceReference, findServiceDataExtensibility, setServiceDataExtensibility, NotificationSubscription, ServiceGroup, ServiceGroupEntry terminationTime 2009-2010 OGSA D. Millot Dépt. INF - INT 104 OGSA 2009-2010 D. Millot Dépt. INF - INT Accès à un service de grille (OGSI) 106 OGSA Service Factory • GSHandle = nom abstrait unique, global, stable : Service de création de services non persistants qui appartiennent au client – <scheme>://<hostname>[:<port>]/<path>/<GSInstanceID> – retourné par l’opération de création de service (interface Factory) • un Service Factory est un service persistant, sans état – à mapper sur une référence (GSR) pour utiliser le service −→ un get http sur GSH+”.wsdl” retourne une telle référence • capable de créer des instances de services non persistants (éventuellement avec état) • reçoit de la part du client les paramètres nécessaires à l’instanciation • GSReference = document en WSDL étendu, contenant toutes les infos nécessaires pour communiquer avec le service et l’utiliser (méthode d’accès, destination des messages, mode d’emploi) : • chaque instance créée est associée/dédiée à un client et ne peut interagir qu’avec celui-ci (cf GSI) – référence du serviceType, spécif des liaisons (protocol bindings), • l’instanciation est faite dans un environnement d’exécution spécifique au client – GSH et date d’expiration de la référence – renouvelable par un service de mapping en cas d’expiration 2009-2010 D. Millot 105 2009-2010 D. Millot 107 Dépt. INF - INT OGSA Dépt. INF - INT OGSA Première version de globus compatible OGSI : GT3 Implémentation GT3 du GRAM (1/3) client registre Version mixte mêlant composants WS et composants pre-WS createService publish • introduction de composants Web Services et transition vers java UserHE MasterHE • chaque service agit comme son propre GRIS (à travers les SDE) ⇒ plus de MDS FSFS stdout stderr FSS Redirector MMJFS • les informations ex-MDS sont au format XML et non plus LDIF de ldap, les descriptions RSL sont encapsulées en XML GRIdMap Scheduling startUHE grid−mapfile launch MJFS MJS system • un registre gardant trace des instances est associé à chaque factory Ressource 2009-2010 D. Millot Dépt. INF - INT 108 OGSA 2009-2010 Dépt. INF - INT Apports de GT3 OGSA Le GRAM est implanté par cinq composants différents : • Master Managed Job Factory Service (MasterHE) • introduction d’un contexte d’exécution utilisateur (UHE, User Hosting Environnement), propre à chaque utilisateur – expose le service virtuel GRAM (permet la découverte) – réoriente les requêtes vers le UserHE de l’utilisateur • un UHE est créé sur une ressource s’il n’y en a pas déjà un pour l’utilisateur à l’arrivée d’une requête • Managed Job Factory Service (UHE) – prépare la soumission de job à partir d’une spécification RSL sous forme de document XML • les instances de service d’un utilisateur s’exécutent dans l’UHE de l’utilisateur, environnement d’accueil qui lui est propre sur chacune des ressources utilisées – paramètres de son opération createService : in : document XML de spécification RSL out : GSH pour le Managed Job Service (MJS) créé • un service Managed Job Factory joue le rôle du gatekeeper dans chaque UHE D. Millot 110 Implémentation GT3 du GRAM (2/3) • introduction d’un contexte d’exécution maître (MHE, Master Hosting Environnement), commun à tous les utilisateurs 2009-2010 D. Millot 109 2009-2010 D. Millot 111 Dépt. INF - INT OGSA Dépt. INF - INT Implémentation GT3 du GRAM (3/3) WS-Resource Framework Modélisation d’une ressource à état proposée par OASIS (Organization for the Advancement of Structured Information Standards) WS-Resource = WS + ressource à état • Managed Job Service (UHE) – opération : start – SDE : job status, GSH pour stdout/stderr • composition caractérisée par un ensemble de données d’état exprimables sous forme d’un document XML (WS-R properties), • File Stream Factory Service (UHE) – prépare le streaming de stdout/stderr • ayant un cycle de vie bien défini, – paramètres de son opération createService : • connue et manipulée par un (ou éventuellement plusieurs) WS. in : url out : GSH pour le FSS créé Une WS-Resource est donc l’association d’un document XML de type bien défini et d’un portType de WS. • File Stream Service (UHE) ⇒ reformulation des concepts et interfaces définies par OGSI (essentiellement qq messages changés ainsi que la sémantique associée) – opération : startStreaming 2009-2010 OGSA D. Millot Dépt. INF - INT 112 OGSA 2009-2010 D. Millot Dépt. INF - INT Problèmes avec OGSI 114 OGSA Spécifications du WS-Resource Framework • WS-Resource Properties (cf service data elements de OGSI) • trop d’aspects dans une seule spécification – accès/modification de propriétés publiques des WS-ressources • trop en avance sur les outils WS existant (utilisation agressive des schémas XML, extension WSDL qui pose problème à JAX-RPC, etc) • WS-Resource Lifetime (cf gestion OGSI de la durée de vie) • trop orienté objet : notions d’état et d’instance de service mal comprises ⇒ distinguer WS et ressources manipulées par le WS • WS-Renewable References (cf GSH et GSR de OGSI) – destruction immédiate/programmée de WS-R – annotation d’une référence de WS-addressing endpoint pour permettre le retrait d’une nouvelle référence Ressource à état : ressource sensible à l’historique de ses manipulations (e.g. fichier, tuple d’une BD relationnelle, Java Beans, etc) ⇒ nécessité de modéliser l’état dans un contexte WS : rendre ± visibles les ressources à état impliquées dans une interaction avec un WS, en rendant accessibles certaines propriétés de ces ressources ⇒ WS-RF. 2009-2010 D. Millot • WS-Service Group – accès à un groupe de services par un point d’entrée unique • WS-BaseNotification (publish/subscribe pour une hiérarchie de thèmes), WS-BaseFault... 113 2009-2010 D. Millot 115 Dépt. INF - INT OGSA Dépt. INF - INT Des standards pour les grid services OGSA Développement de services avec GT4 : C WS Core Le C WS Core est une boîte à outils en C pour la création de WS et de clients conformes à WS-RF et WS-N. Elle comporte : WSRF WS−notification • un conteneur de services autonome UDDI* WS−addressing • une API pour l’immersion de services dans une application C • une API Resource pour la gestion de ressources depuis un service WSDL* SCHEMAS* • le support de clients et serveurs HTTP/1.1 SOAP* DTD • la génération, à partir de schémas WSDL, de stubs en C pur (bloquants ou asynchrones) XML* noyau WS • des modules de service chargeables dynamiquement GT4 est disponible en version stable depuis l’été 2005 2009-2010 D. Millot Dépt. INF - INT 116 OGSA 2009-2010 Dépt. INF - INT Une version de globus compatible WSRF : GT4 OGSA • gestion de données distribuées (fichiers ou BD) : accès, transaction, gestion de réplicats, déplacement • Web Services Resource Framework (WSRF) • workflow : exécution coordonnée de tâches multiples sur de multiples ressources • Web Service Notification (WSN) qui remplace source/sink Spécifie également de nouveaux composants : • audit : enregistrement de données d’utilisation, contrôle (fraude, intrusion) • WS Authentication Authorization remplace GSI et se compose de : – Message level security : WS-Security et WS-SecureConversation (encryptage des messages SOAP, intégrité, et protection contre le replay) • instrumentation et monitoring : découverte de capteurs, génération d’alertes en cas de problème • localisation de problèmes : dump, traces, log avec marquage d’événements et corrélations – Authorization framework : différents schémas d’autorisation (grid-mapfile, access control lists (ACL), custom authorization handlers via le protocole SAML). D. Millot 118 Évolution vers des services de plus haut niveau GT4 implante deux nouveaux standards (dans le WS Core) : 2009-2010 D. Millot • autonomic computing ? 117 2009-2010 D. Millot 119 Dépt. INF - INT OGSA Dépt. INF - INT Comparaison avec CORBA, EJB, J2EE ou DCOM Vers une gestion scalable des utilisateurs – interfaces standard d’accès à des ressources, Non passage à l’échelle du mapping des certificats sur des comptes locaux pour l’accès des utilisateurs aux ressources des grilles => Virtual Organisation Management System proposé par gLite – mécanisme d’invocation distante, – service de recherche et découverte d’instances • Avantage des technologies de grille : Définition de VO regroupant des utilisateurs et des ressources – mécanismes de partage complétement dynamiques, non limités à une seule et même organisation, orientés grande échelle (web). • enregistrement d’un utilisateur auprès de différentes VO → adhésion, appartenance à un groupe de la VO, rôle – forme d’interaction non limitée au client-serveur mais orientée vers l’utilisation coordonnée de ressources multiples. • enregistrement d’une ressource auprès de différentes VO → association d’un pool de comptes à chaque VO – techno-neutre (utilisation systématique de XML) – transport par http qui franchit sans problème les pare-feux voms-proxy-init : création de certificat de proxy comportant des infos supplémentaires liées à la VO => mapping automatique sur un compte du pool 2009-2010 D. Millot Dépt. INF - INT Grilles – abstration des utilisateurs et des ressources Peer-to-peer/Desktop grid computing : a priori plus limités 120 Grilles 2009-2010 D. Millot Dépt. INF - INT 122 Grilles Problèmes à résoudre pour les grilles Normalisation/industrialisation des services de grille • Open Grid Forum (OGF) (http://www.ogf.org) • déploiement et maintenance d’intergiciel sur des centaines ou milliers de nœuds • IBM : – Grid Toolkit basé sur globus avec documentation et scripts utilisateur, optimisé pour l’architecture eServer sous AIX ou linux • localisation de services, interopérabilité – technologie grille dans des produits (DB2, WebSphere, stockage) • accès aux données à travers des réseaux longue distance – solution “Grid and Grow Express” • performances, QoS, dynamicité – élément clé de la stratégie “on demand” • sûreté de fonctionnement, tolérance aux défaillances • Parabon (Frontier, Pioneer) • accès aux informations sur les travaux en cours • United Devices (Grid MP, Enterprise/on Demand/Global) • mesure et facturation des ressources consommées • GridXpert (intégré à United Devices), DataSynapse, univa... 2009-2010 D. Millot 121 2009-2010 D. Millot 123 Dépt. INF - INT Perspectives du calcul à grande échelle Dépt. INF - INT Grandes tendances Logiciel : conjuguer efficacité/portabilité Perspectives du calcul à grande échelle • des mécanismes qui court–circuitent le système : – processus légers, communications légères • Grandes tendances • des solutions faciles à maîtriser et/ou efficaces : – Matériel : vers des architectures modulaires, hybrides et extensibles – modèle data-parallel pour les applications régulières – modèle shared-variables pour les applications irrégulières – Logiciel : conjuguer efficacité et portabilité – modèle message passing pour les applications à gros grain • une bonne portabilité à travers des standards reconnus et implantés efficacement : • Directions de recherche – maîtriser le passage à l’échelle – HPF, OpenMP, MPI – maîtriser l’hétérogénéité Mais... pas encore de modèle de programmation hybride !!! 2009-2010 D. Millot Dépt. INF - INT 124 Grandes tendances 2009-2010 D. Millot Dépt. INF - INT Matériel : vers des architectures hybrides/extensibles 126 Directions de recherche Directions de recherche • des composants performants à moindre coût : – processeurs intégrant des mécanismes de cohérence Subsistent des problèmes difficiles ou imparfaitement résolus : – cartes multiprocesseur, processeurs multicœur, GPGPU • traitement efficace des applications irrégulières, – réseaux rapides (faible latence, haut débit) • gestion d’un état global sur grappe et grille ⇒ point de reprise, debugging, – intégration renforcée de l’interface de communication • organisation physique orientée extensibilité : – mémoire distribuée (grappes) • déploiement et maintenance de grappes, d’applis sur grappes, – regroupement hiérarchisé de machines (clumps) • ordonnancement d’applications sur grille, • le logiciel peut a priori estomper certaines différences : • prise en compte des multi-cœurs et passage à la grande échelle – send/recv supporté sur machine EAU (utilisation de buffers) • modèle de programmation hybride... – shared virtual memory sur architectures EAM (DSM) 2009-2010 D. Millot 125 2009-2010 D. Millot 127