La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Exploitation efficace des grappes de PC Raymond Namyst Projet INRIA ReMaP LIP, ENS Lyon JTE Cluster Computing Octobre 2001, Besançon.

Présentations similaires


Présentation au sujet: "Exploitation efficace des grappes de PC Raymond Namyst Projet INRIA ReMaP LIP, ENS Lyon JTE Cluster Computing Octobre 2001, Besançon."— Transcription de la présentation:

1 Exploitation efficace des grappes de PC Raymond Namyst Projet INRIA ReMaP LIP, ENS Lyon JTE Cluster Computing Octobre 2001, Besançon

2 Plan u Contexte et motivations Grappes, réseaux rapides, asynchronisme, … u Communications efficaces sur grappes Madeleine : principe, architecture, performances, … u Vers une meilleure réactivité… Multithreading, interruptions, scrutation u Bilan et perspectives Vers les grappes de grappes…

3 Contexte et motivations Grappes « hautes performances »

4 Contexte technologique Myrinet u Grappes  Architecture homogène ou presque Noeuds : PC ou stations de travail, mono/multiprocesseurs Réseau : Ethernet, Myrinet, SCI, Giganet, …

5 Communications performantes u Comment exploiter les réseaux rapides ?  Faible latence Quelques microsecondes  Bande passante élevée De l’ordre du Gb/s u Tendance actuelle  Interaction directe avec la carte réseau Communication en « mode utilisateur »  Transmissions zéro-copie La carte récupère/dépose les données au bon endroit

6 Ethernet u Cartes passives (sauf Giga-Ethernet)  Interfaces : TCP, SBP, GAMMA, VIA, … Network TX reg RX reg Packet Interface PCI Bridge PCI Bridge PCI Bus DMA Memory TX-ring NIC

7 Myrinet u Produit Myricom (C. Seitz)  Réseau commuté, routage wormhole u Carte programmable  Protocoles de transmission « intelligents » Stratégie adaptée à la taille des messages Déclenchement d’interruptions Network RISC Packet Interface DMA PCI Bridge PCI Bridge PCI Bus LANai SRAM NIC

8 Interface efficace pour Myrinet u BIP : Basic Interface for Parallelism  Loic Prylli (ReMaP) en 1997 u Performances  Latence  5  s, bande passante > 125 Mo/s u Fonctionnalités réduites au minimum Messages courts : recopiés à l’arrivée Messages longs : mode zéro-copie (RDV) u Contrôle de flux minimal  Matériel (msgs “évaporés” au dela de 50ms)

9 SCI : Scalable Coherent Interface u Réseau à “capacité d’adressage”  Normalisé par IEEE en 1993  Principal constructeur : Dolphin ICS u Principe  Accés mémoire distants Implicites (après projection) Explicites (remote DMA)  Support matériel pour une MVP (?) u Performances  Ecriture  2  s, lecture  4  s  Bande passante  85 Mo/s (difficilement !)

10 Adressage à distance u Projections effectués par le pilote (SISCI)  Zones de mémoire physiques souvent spécifiques u Accès mémoire effectués par le processeur  Le processeur distant n’est pas (forcément) interrompu

11 Ce qu’il faut retenir u Interfaces de très bas niveau !  Fonctionnalités proches du matériel Grande efficacité Paradigmes très différents Approche non généralisable  Pas de consensus Tentative de standard : VIA -Virtual Interface Architecture (Intel, Microsoft, Compaq) -But : dénominateur commun -Bas niveau, peu adapté à certaines technologies  Portabilité ???

12 Contexte et motivations Concilier efficacité et portabilité

13 Il y a MPI… u Implantations efficaces existantes MPICH/BIP, MPICH/SISCI, etc. u Quid des schémas de communication de la vraie vie ? Messages dont le contenu est inconnu a priori par le récepteur -Transmissions zéro-copie ? Messages asynchrones -Recouvrement des communications ? Accès mémoire distants (PUT/GET) -Temps de réponse ?

14 Transmissions zéro-copie Processus A Processus BRéseau Préparation mémoire Acquittement Message Entête Données DMA

15 Et la réactivité alors ? u Problèmes  Assurer la progression des communications asynchrones  Réagir rapidement aux sollicitations extérieures proc réseau

16 Envois asynchrones u Parvient-on vraiment à assurer du recouvrement ? Processus AProcessus B Acquittement MPI_Isend MPI_recv MPI_test

17 Communications efficaces sur grappes L’interface Madeleine

18 Madeleine u Interface de communication  Efficace et portable u Double objectif  Support de multiples paradigmes/modes  Support de multiples réseaux simultanément u Proposition  Programmation par « contrat » Contrôle du niveau d’optimisation Transferts immédiats possibles u Statut  Disponible sur BIP, SISCI, TCP et MPI.  Portage en cours sur VIA

19 u Construction des messages u Gestion des canaux (~ communicators)  Choix explicite du dispositif physique Interface mad_begin_packing mad_pack mad_end_packing mad_begin_unpacking mad_unpack mad_end_unpacking

20 Packing et Unpacking u Commandes :  mad_pack (cnx, buffer, len, pack_mode, unpack_mode)  mad_unpack (cnx, buffer, len, pack_mode, unpack_mode) u Modes : Send_SAFER Send_CHEAPER Send_LATER Receive_EXPRESS Receive_CHEAPER

21 Exemple mad_end_unpacking(cnx); send_CHEAPER,receive_CHEAPER); mad_unpack(cnx, s, n, s = malloc(n); send_CHEAPER,receive_EXPRESS); mad_unpack(cnx, &n, sizeof(int), cnx = mad_begin_unpacking(channel); p_mad_connection_t cnx; char *s = NULL; int n; mad_pack(cnx, s, n, send_CHEAPER, receive_CHEAPER); mad_end_packing(cnx); send_CHEAPER, receive_EXPRESS); mad_pack(cnx, &n, sizeof(int), n = strlen(s) + 1; cnx = mad_begin_packing(channel, dest); p_mad_connection_t cnx; char *s = "Hello, World !"; int n; ÉmissionRéception

22 Exemple mad_end_unpacking(cnx); send_CHEAPER,receive_CHEAPER); mad_unpack(cnx, s, n, s = malloc(n); send_CHEAPER,receive_EXPRESS); mad_unpack(cnx, &n, sizeof(int), cnx = mad_begin_unpacking(channel); p_mad_connection_t cnx; char *s = NULL; int n; mad_pack(cnx, s, n, send_CHEAPER, receive_CHEAPER); mad_end_packing(cnx); send_CHEAPER, receive_EXPRESS); mad_pack(cnx, &n, sizeof(int), n = strlen(s) + 1; cnx = mad_begin_packing(channel, dest); p_mad_connection_t cnx; char *s = "Hello, World !"; int n; ÉmissionRéception

23 Exemple mad_end_unpacking(cnx); send_CHEAPER,receive_CHEAPER); mad_unpack(cnx, s, n, s = malloc(n); send_CHEAPER,receive_EXPRESS); mad_unpack(cnx, &n, sizeof(int), cnx = mad_begin_unpacking(channel); p_mad_connection_t cnx; char *s = NULL; int n; mad_pack(cnx, s, n, send_CHEAPER, receive_CHEAPER); mad_end_packing(cnx); send_CHEAPER, receive_EXPRESS); mad_pack(cnx, &n, sizeof(int), n = strlen(s) + 1; cnx = mad_begin_packing(channel, dest); p_mad_connection_t cnx; char *s = "Hello, World !"; int n; ÉmissionRéception

24 Exemple mad_end_unpacking(cnx); send_CHEAPER,receive_CHEAPER); mad_unpack(cnx, s, n, s = malloc(n); send_CHEAPER,receive_EXPRESS); mad_unpack(cnx, &n, sizeof(int), cnx = mad_begin_unpacking(channel); p_mad_connection_t cnx; char *s = NULL; int n; mad_pack(cnx, s, n, send_CHEAPER, receive_CHEAPER); mad_end_packing(cnx); send_CHEAPER, receive_EXPRESS); mad_pack(cnx, &n, sizeof(int), n = strlen(s) + 1; cnx = mad_begin_packing(channel, dest); p_mad_connection_t cnx; char *s = "Hello, World !"; int n; ÉmissionRéception

25 L’interface Madeleine Architecture

26 Architecture générale PM2, MPI, ORB, … Madeleine Gestion générique de tampons Gestion des transmissions BIP, SISCI, VIA, TCP, MPI

27 Adaptativité Application MGT m MT 1 Orientation Sélection MGT 1 MGT m MT n MT 1 MGT 1 MT n Orientation Sélection MT n MGT 1 MT n MGT 1 Réseau Couche de gestion de tampons Couche réseau

28 L’interface Madeleine Performances

29 Quelques résultats u Latence  8 µs sur BIP/Myrinet  6 µs sur SISCI/SCI u Bande passante  125 Mo/s sur BIP/Myrinet  80 Mo/s sur SISCI/SCI u Migration (PM2)  24 µs sur SISCI/SCI  52 µs sur BIP/Myrinet

30 L’interface Madeleine Exemple d’application

31 ORB sur Madeleine u Projet PARIS (IRISA)  Alexandre Denis, Christian Perez Talon IDL Invocation de l ’objet Courtier d’objets (ORB) BOA/POA Squelette IDL Implémentatio n de l ’objet IIOP Madeleine TCP/IP SCI, Myrinet, VIA, etc.

32 Performances u Débit  SCI : 86Mo/s  Myrinet : 91Mo/s  92 à 99% du débit Madeleine exploité u Latence  CORBA/IIOP (standard) 150 µs  CORBA/SCI ou Myrinet 50 µs CORBA sur SISCI/SCI, BIP/Myrinet et TCP/Ethernet-100

33 CORBA et MPI u Comparaison entre CORBA et MPI  omniORB/Madeleine - MPI/Madeleine  performances du même ordre de grandeur CORBA et MPI sur SCI

34 Vers une meilleure réactivité… Où l’on reparle du multithreading

35 Rappel u Le problème des envois asynchrones Processus AProcessus B Acquittement MPI_Isend MPI_recv MPI_test

36 Vers un MPI réactif ? u Notification des évènements par signaux  Inutilisable en pratique Indisponible dans la majorité des interfaces Réentrance du code u Utilisation du multithreading 1 thread prend en charge 1 opération asynchrone Les threads de niveau noyau semblent appropriés -Appels systèmes bloquants Mais -Ordonnancement non garanti -Mise en œuvre coûteuse

37 Pourquoi pas un multithreading mixte ? u Deux ordonnanceurs coopérants processor OS Kernel Process Scheduler User Space Scheduler Note: Quid des appels systèmes bloquants ?

38 Appels bloquants u Au lieu de Espace noyau Espace utilisateur Matériel syscall u …on voudrait : Espace noyau Espace utilisateur Matériel I/O request interrupt Temps CPU perdu CPU utilisé

39 Scheduler Activations u Introduit par [Anderson et al. 91] u Principe : la coopération entre les deux ordonnanceurs est bidirectionnelle L’ordonnanceur utilisateur utilise des appels systèmes L’ordonnanceur noyau utilise des upcalls u Upcalls  Informe l’application des événements noyaux u Activations  Autant d’activations en exécution que de processeurs  Contrôlées par le noyau u Idée : revisiter le modèle et l’intégrer à Linux

40 Illustration du principe Process User scheduler

41 Illustration du principe Process new

42 Illustration du principe Process new

43 Illustration du principe u Déroulement d’un appel bloquant… Process Appel système bloquant

44 Illustration du principe u Déroulement d’un appel bloquant… Process New + blocked

45 Illustration du principe u Déroulement d’un appel bloquant… Process Appel terminé

46 Illustration du principe u Déroulement d’un appel bloquant… Process Unblocked

47 Illustration du principe u Déroulement d’un appel bloquant… Process

48 Difficultés de mise en œuvre u Retour d’un appel bloquant  Un « unblock upcall » nécessite deux appels systèmes supplémentaires…  La généricité coûte cher !! u Perte du processeur  Signalée par un upcall particulier Objectif = éviter les attentes actives !  Conséquences L’ordonnanceur de niveau utilisateur doit se prémunir contre ces interruptions intempestives Le coût est prohibitif !

49 Un modèle revisité u Contexte = calcul haute performance Une application // à la fois sur la grappe Optimisations pour ce cas de figure -Les activations perdent rarement le processeur u Propositions Suppression des évènements « preempt » Activations redémarrées au plus vite -Lors du retour mode noyau -> mode utilisateur -Lors du relâchement d’une section critique -Temps de réponse garanti ! u Implantation Linux 2.4.x Bibliothèque de threads Marcel

50 Performances

51 Vers une meilleure réactivité… Un mot sur la scrutation active…

52 Scrutation et multithreading u La scrutation est nécessaire API réseau ne fournissant pas d’appels bloquants  Problème Fréquence difficile à assurer Coûteux en présence de multiples « scruteurs » u Proposition  Délégation à l’ordonnanceur de threads Fréquence contrôlée Factorisation des scrutations multiples  Mécanisme unificateur Utilisation conjointe des activations

53 Scrutation par l’ordonnanceur Ordonnanceur des threads  Création d’une catégorie de polling (ex: MPI), assignation d’une fréquence et enregistrement de callbacks. Polling jobs queue MPI MPI_Isend Marcel_poll  Chaque thread candidat à une opération de polling adresse une requête à l’ordonnanceur et se bloque. MPI_Irecv Marcel_poll callback  Régulièrement, l’ordonnanceur appelle la fonction de scrutation définie par l’utilisateur... Polling( )

54 Bilan et perspectives Les grappes… et après ?

55 Bilan u Les communications sur grappes semblent assez bien maîtrisées  Latence, bande passante  Certains points restent difficiles Le « ping-pong » ne reflète pas les applications réelles La réactivité des nœuds est une propriété importante u De nombreuses réalisations s’appuient sur le tandem Madeleine-Marcel Hyperion : machine virtuelle Java pour grappes MPICH-Mad : MPI multi-protocoles Global Arrays : distribution des données OmniORB Athapascan ? u http://www.pm2.orghttp://www.pm2.org

56 Collaborations u Partenariats Projet Hyperion (P. Hatcher, UNH, USA) Projet INRIA PARIS (T. Priol, IRISA) Equipe de J. Roman (Labri) RNRT VTHD ACI GRID u Contrats ReMaP + PARIS + Alcatel -Bus logiciel haute performance pour CORBA ReMaP + APACHE + SIRAC + Microsoft -Portage des environnements sous Windows2000

57 Travaux en cours u Support des grappes de grappes Communications hétérogènes  Routage efficace sur les « passerelles » Maintien d’une bande passante élevée Réseau à haut débit Réseau haute performance

58 Travaux en cours u Techniques employées Minimisation des copies entre les cartes Maintien du débit par pipeline logiciel Utilisation du multithreading u Résultats préliminaires  SCI vers Myrinet Bande passante > 48 Mo/s (limite théorique = 66 Mo/s)  Myrinet vers SCI Bande passante = 36 Mo/s seulement Apparition de conflits sur le bus PCI -DMA Myrinet vs PIO SCI -Le pipeline n’en est plus un !


Télécharger ppt "Exploitation efficace des grappes de PC Raymond Namyst Projet INRIA ReMaP LIP, ENS Lyon JTE Cluster Computing Octobre 2001, Besançon."

Présentations similaires


Annonces Google