• Aucun résultat trouvé

grille de calcul

2.3 Approche propos´ ee

a l’´echelle. Cela signifie qu’elles doivent offrir de bonnes performances mˆeme pour des applications de grande taille.

En outre, plus le nombre de nœuds sur lesquels s’ex´ecute les processus d’une application est ´elev´e, plus la probabilit´e de d´efaillances est grande. Les solutions de tol´erance aux fautes que nous proposons doivent donc ˆetre adapt´ees `a des fr´equences de d´efaillances ´elev´ees.

2.2.3 H´et´erog´en´eit´e

Dans le chapitre 1, nous avons vu qu’une grille de calcul peut ˆetre compos´ee de ressources h´et´erog`enes comme des ordinateurs personnels et des grappes de calcul. Cette h´et´erog´en´eit´e peut aussi se retrouver dans le logiciel. Il est par exemple fort probable que des ressources appartenant `a des domaines d’administration diff´erents ne soient pas ´equip´ees des mˆemes logiciels. Cependant, des applications peuvent ˆetre distribu´ees sur ces ressources h´et´erog`enes. Il faut alors ˆetre capable d’assurer l’ex´ecution fiable de ces applications en prenant en compte cette h´et´erog´en´eit´e.

Cette h´et´erog´en´eit´e se retrouve aussi dans la vari´et´e des applications qui peuvent ˆetre ex´ecut´ees sur une grille de calcul. Ces applications peuvent avoir des caract´eristiques et des besoins en tol´erance aux fautes diff´erents. C’est pourquoi il est souhaitable de proposer des solutions de tol´erance aux fautes g´en´eriques, capables de s’adapter `a la vari´et´e des besoins.

2.3 Approche propos´ee

L’objectif principal auquel tente de r´epondre cette th`ese est d’assurer l’ex´ecution fiable sur grille de calcul d’applications de calcul haute performance. Pour atteindre cet objectif, nous proposons un ensemble de solutions qui peuvent ˆetre regroup´ees autour de trois axes principaux :

– Un service de recouvrement arri`ere pour assurer le red´emarrage automatique des applications d´efaillantes.

– Un cadre pour mettre en œuvre des services de grille hautement disponibles et auto-r´eparants.

– Un protocole de recouvrement arri`ere passant `a l’´echelle pour les applications `a ´echange de messages.

Nous d´ecrivons dans la suite de ce paragraphe, les contributions associ´ees `a chacun de ces axes.

2.3.1 Un service de recouvrement arri`ere pour applications distribu´ees

Pour assurer que les applications ex´ecut´ees sur une grille se terminent correcte-ment, il faut ˆetre capable de red´emarrer celles dont l’ex´ecution est interrompue par une d´efaillance dans l’infrastructure sous-jacente. Telle est la mission de notre service de re-couvrement arri`ere, nomm´e XtreemGCP [127] et con¸cu dans le cadre du projet europ´een XtreemOS [204].

Pour simplifier l’utilisation de la grille, l’utilisateur doit pouvoir ˆetre d´echarg´e compl`etement de la gestion des d´efaillances. Il est admis que les techniques de

recou-vrement arri`ere sont les plus adapt´ees pour la tol´erance aux fautes d’applications de calcul haute performance. Un service de recouvrement arri`ere pour grille de calcul doit pouvoir red´emarrer automatiquement les applications d´efaillantes. Il doit de plus ˆetre ca-pable de s’adapter `a la vari´et´e des caract´eristiques des applications et `a l’h´et´erog´en´eit´e des ressources sur lesquelles elles s’ex´ecutent. Enfin, dans la perspective de simplifier l’u-tilisation de la grille, il est souhaitable qu’il puisse fournir des m´ecanismes de tol´erance aux fautes transparents pour les applications qui n’ont pas ´et´e con¸cues pour tol´erer les d´efaillances.

Pour assurer le red´emarrage automatique des applications, XtreemGCP prend en charge les interactions n´ecessaires avec les services du syst`eme de grille. Dans le cadre du syst`eme XtreemOS, ceci inclut des interactions avec le service de gestion des travaux [47] pour obtenir les ressources n´ecessaires pour remplacer les ressources d´efaillantes, ou en-core les interactions avec le syst`eme de fichier distribu´e XtreemFS [91] pour le stockage des donn´ees g´en´er´ees par la sauvegarde des points de reprise.

Fond´e sur une architecture compl`etement distribu´ee lui permettant de passer `a l’´echelle, XtreemGCP est con¸cu de mani`ere g´en´erique pour pouvoir y int´egrer dans le futur diff´erents travaux de la communaut´e en tol´erance aux fautes. Cette g´en´ericit´e permet de prendre en charge l’h´et´erog´en´eit´e de la grille et des applications qui s’y ex´ecutent. Ainsi XtreemGCP peut exploiter des m´ecanismes de tol´erance aux fautes qui seraient directement inclus dans l’application ou dans des biblioth`eques tol´erantes aux fautes utilis´ees par l’applica-tion, comme certaines biblioth`eques de communication MPI [30, 166, 93]. De plus, nous proposons une interface g´en´erique aux m´ecanismes de sauvegarde de points de reprise de processus, tels que BLCR [99] ou OpenVZ [143]. Cette interface permet `a XtreemGCP d’int´egrer simplement plusieurs de ces m´ecanismes. Ainsi il est capable de g´erer des applica-tions distribu´ees sur des ressources h´et´erog`enes fournissant des m´ecanismes de sauvegarde de points de reprise de processus diff´erents.

Enfin, pour permettre `a l’utilisateur de la grille, qui n’est pas n´ecessairement informati-cien, de rendre sont application tol´erante aux fautes sans modifier celle-ci, nous proposons de fournir des solutions de recouvrement arri`ere appliqu´ees de mani`ere transparente pour l’application. Ainsi XtreemGCP permet de mettre en œuvre diff´erents protocoles de re-couvrement arri`ere pour applications `a ´echange de messages. Pour cela, il se fonde sur des solutions de sauvegarde de points de reprise de processus mises en œuvre par le syst`eme d’exploitation des nœuds de la grille [99, 143].

Le chapitre 3 pr´esente la conception du service XtreemGCP. Ces travaux sont le fruit de collaborations avec les membres du projet XtreemOS, et plus particuli`erement avec John Mehnert-Sphan et Mickael Sch¨ottner deHeinrich-Heine University of D¨usseldorf. La mise en œuvre de ce service [127], l’int´egration de diff´erents outils de sauvegarde de processus, et la mise en œuvre de protocoles de recouvrement arri`ere au sein du service [68], ont ´et´e r´ealis´ees par les partenaires du projet.

2.3.2 Un cadre pour la mise en œuvre de services hautement disponibles

La haute disponibilit´e des services du syst`eme de grille est un enjeu majeur. Si un utilisateur doit soumettre une application pour en obtenir les r´esultats au plus vite, il faut que le service de soumission d’application lui permette de le faire. De mˆeme pour qu’un service tel que XtreemGCP soit capable de red´emarrer une application d´efaillante, il faut qu’il soit disponible au moment o`u l’application subit la d´efaillance. Cependant ces services s’ex´ecutant eux aussi sur des nœuds de la grille, ils peuvent subir des d´efaillances. La volatilit´e des nœuds de la grille peut compromettre la disponibilit´e de ces services.

Les r´eseaux pair-`a-pair structur´es [163, 182] sont une solution attrayante pour la con-ception de syst`emes de grilles adapt´ees aux grilles de grande taille et dynamiques [103, 155] car ils fournissent des primitives de routage tol´erantes aux fautes et passant `a l’´echelle.

Notre objectif est d’assurer la haute disponibilit´e des services de grille dans ce contexte. Nous voulons ˆetre capable d’assurer la haute disponibilit´e des services sans intervention humaine pour g´erer les cons´equences des d´efaillances. De plus, nous voulons que les services existants puissent ˆetre rendus hautement disponibles avec un effort minimal de la part du programmeur. Enfin, dans un souci de simplicit´e d’utilisation, nous voulons que les d´efaillances que subissent ces services soient rendues compl`etement transparentes pour leurs utilisateurs.

Pour rendre les services de grille hautement disponibles, nous optons pour une tech-nique de duplication active car un service en interaction avec le monde ext´erieur ne peut supporter de retour arri`ere. De plus, ce choix permet de dupliquer des services `a ´etat au comportement d´eterministe sans modification de ceux-ci. L’´etude des services composant le syst`eme de grille Vigne [159] nous a montr´e qu’ils ´etaient d´eterministes. Nos travaux portent donc sur la duplication active de service dans un r´eseau pair-`a-pair structur´e.

En distribuant les services dupliqu´es dans une table de hachage distribu´ee mise en œuvre au dessus du r´eseau pair-`a-pair structur´e, il est possible de g´erer un grand nombre de service et de r´epartir la charge des services dupliqu´es sur l’ensemble des nœuds de la grille. En exploitant les solutions de routage fond´ees sur des cl´es, ´evitant d’associer les services de la grille `a des adresses physiques, la duplication active des services et les reconfigurations n´ecessaires pour traiter les cons´equences des d´efaillances, peuvent ˆetre rendues compl`etement transparentes pour les utilisateurs.

Semias est le cadre que nous avons con¸cu et mis en œuvre pour rendre des services de grille hautement disponibles et auto-r´eparants. L’auto-r´eparation est la capacit´e d’un syst`eme `a maintenir son niveau de disponibilit´e. Elle implique des reconfigurations au-tomatiques pour remplacer les duplicatas d´efaillants par de nouveaux duplicatas et ainsi garantir la haute disponibilit´e des services sans intervention humaine.

Dans le chapitre 4, nous pr´esentons l’architecture de Semias. Cette architecture est con¸cue pour g´erer efficacement la volatilit´e des nœuds de la grille. Nous d´ecrivons notre solution d’auto-r´eparation pour assurer la haute disponibilit´e des services dans un environ-nement tr`es dynamique tout en limitant le coˆut des reconfigurations. Nous pr´esentons enfin une ´evaluation de notre prototype sur Grid’5000. Dans le cadre de ces ´evaluations, nous avons utilis´e Semias pour rendre le service de gestion d’application de Vigne hautement disponible et auto-r´eparant.

Trois stagiaires que j’ai encadr´e, ont particip´e aux travaux sur Semias : Rajib Nath, ´etudiant en Master `a University of Tennessee (´Etats-Unis), S´ebastien Gillot, ´etudiant en Master `a l’Universit´e de Rennes 1, et Stefania Costache, ´etudiante en Master `aPolitehnica University of Bucarest (Roumanie).

2.3.3 Un protocole de recouvrement arri`ere pour applications `a ´echange de messages de grande taille

Les grilles de calcul peuvent fournir de grandes capacit´es de ressources de calcul et donc permettre aux utilisateurs d’ex´ecuter des applications de tr`es grande taille. Nombre de ces applications sont fond´ees sur l’´echange de messages. De nombreux protocoles de recouvrement arri`ere pour applications `a ´echange de messages existent, mais tr`es peu abordent le probl`eme du passage `a l’´echelle. La sauvegarde de points de reprise coordonn´es, technique la plus couramment employ´ee, n´ecessite le retour arri`ere de tous les processus

de l’application apr`es la d´efaillance d’un d’entre eux. Elle n’est pas adapt´ee pour des applications de grande taille [117] ex´ecut´ees dans un environnement dynamique.

Nous proposons un protocole `a enregistrement de messages optimiste adapt´e aux appli-cations `a ´echange de messages de grande taille. Les protocoles `a enregistrement de messages peuvent par nature passer `a l’´echelle car ils ne n´ecessitent aucune coordination entre les processus de l’application en fonctionnement normal. De plus, ils sont adapt´es aux environ-nements dynamiques car ils ne n´ecessitent pas le red´emarrage de tous les processus suite `

a une d´efaillance. Enfin Les protocoles `a enregistrement de messages optimiste peuvent offrir de bonnes performances car ils permettent d’effectuer les sauvegardes d’information sur support stable en parall`ele avec l’ex´ecution des processus de l’application.

Le seul surcoˆut en terme de performance engendr´e par les protocoles `a enregistrement de messages optimistes est li´e `a la gestion des informations de d´ependance entre les proces-sus de l’application qui sont n´ecessaires lors du recouvrement pour d´etecter les procesproces-sus orphelins. Les protocoles optimistes attachent des informations de d´ependance sur les mes-sages de l’application. Pour les protocoles existants capables tol´erants plusieurs fautes, la taille de ces informations est proportionnelle `a la taille de l’application.

Pour un meilleur passage `a l’´echelle, nous proposons un nouveau protocole fond´e sur l’enregistrement de messages optimisteactif qui permet de limiter la taille des informations attach´ees sur chaque message de l’application tout en conservant la capacit´e de tol´erer plusieurs fautes simultan´ees.

La gestion centralis´ee de la sauvegarde des informations de d´ependances consid´er´ee dans les travaux sur les protocoles `a enregistrement de messages est une autre limite au passage `a l’´echelle. C’est pourquoi nous proposons une solution distribu´ee pour la sauvegarde des informations de d´ependance fond´ee sur l’utilisation de la m´emoire volatile des nœuds sur lesquels est ex´ecut´ee l’application.

Dans le chapitre 5, nous d´ecrivons le protocole O2P [162] et prouvons qu’il est capable de tol´erer plusieurs fautes simultan´ees de processus de l’application. Nous d´ecrivons ensuite une mise en œuvre de ce protocole et de la solution distribu´ee que nous proposons pour la sauvegarde des informations de d´ependance dans la biblioth`eque Open MPI. Enfin nous pr´esentons une ´evaluation de ces solutions sur la plate-forme Grid’5000.

2.4 Synth`ese

La volatilit´e des nœuds et en particulier les risques de d´efaillance, peuvent compro-mettre la terminaison des applications s’ex´ecutant sur une grille de calcul, empˆechant les utilisateurs d’obtenir les r´esultats attendus. Il est donc n´ecessaire de mettre en place des solutions de tol´erance aux fautes. L’objectif vers lequel nous devons tendre est de rendre l’ex´ecution d’applications sur grille de calcul aussi simple que si aucune d´efaillance ne s’y produisait.

Pour cela, nous proposons un service de recouvrement arri`ere pour la grille capable de red´emarrer automatiquement les applications d´efaillantes sans intervention de l’utilisateur. Ce service est con¸cu de mani`ere g´en´erique pour s’adapter `a la vari´et´e des applications pouvant ˆetre soumises `a la grille et `a l’h´et´erog´en´eit´e des ressources.

Pour assurer le bon fonctionnement de ce service, et plus g´en´eralement pour que les services de grilles soient disponibles pour les utilisateurs et les applications en d´epit des d´efaillances, nous proposons un cadre offrant les propri´et´es de haute disponibilit´e et d’auto-r´eparation aux services `a ´etats du syst`eme de grille. Ce cadre, ne n´ecessitant que peu de modifications des services existants, assure une gestion transparente des reconfigurations pour les utilisateurs.

Enfin, pour assurer une ex´ecution fiable sur grille de calcul d’applications `a ´echanges de messages de grande taille avec un impact minimal sur les performances de ces applications, nous proposons un protocole `a enregistrement de messages optimiste actif. Nous proposons de plus une mise en œuvre distribu´ee de l’enregistrement des messages pour un meilleur passage `a l’´echelle.

Chapitre 3