Team PARIS

Members
Overall Objectives
Scientific Foundations
Application Domains
Software
New Results
Contracts and Grants with Industry
Other Grants and Activities
Dissemination
Bibliography
Inria / Raweb 2002
Project: PARIS

Project : paris

Section: New Results


Keywords : grappe de calculateurs , système d'exploitation distribué , système à image unique , mémoire partagée répartie , système de gestion de fichiers parallèle , migration de processus , ordonnancement global , haute disponibilité , tolérance aux fautes , recouvrement arrière , OpenMP .

Systèmes d'exploitation pour grappes de PC

Participants : Ramamurthy Badrinath, Viet Hoa Dinh, Pascal Gallard, Renaud Lottiaux, Christine Morin, Louis Rilling, Gaël Utard, Geoffroy Vallée.

Panorama général

Du fait de l'augmentation continue de la puissance des microprocesseurs et de l'évolution de la technologie des réseaux d'interconnexion, les grappes de calculateurs sont devenues des architectures attrayantes pour l'exécution d'applications de calcul et/ou d'accès aux données intensifs. Un problème clé des grappes de calculateurs est de combiner haute performance et haute disponibilité afin de pouvoir satisfaire les exigences des applications parallèles de longue durée. L'une de nos activités de recherche porte sur la conception et la mise en œuvre d'un système d'exploitation distribué pour grappe, appelé Gobelins. Notre objectif est de construire un système à image unique grâce à des mécanismes de gestion globale et dynamique des ressources pour donner l'illusion qu'une grappe constitue une seule machine à haute performance et à haute disponibilité .

Figure 2. Architecture du système Gobelins.
gobrapdac02

Les travaux effectués en 2002 portent plus particulièrement sur les aspects suivants : la pagination en mémoire distante, l'ordonnancement global des processus, la gestion dynamique des flux de données, les entrées-sorties à haute performance, le recouvrement arrière des applications parallèles, le support des applications OpenMP, la conception d'un serveur Web fondé sur Gobelins.

L'effort entrepris l'an dernier pour améliorer la robustesse du prototype du système Gobelins en vue de valider nos résultats de recherche sur des applications industrielles d'envergure a été poursuivi cette année grâce à la présence d'un ingénieur associé et d'un post-doctorant industriel.

Cette année, un effort très important a été consenti pour permettre la diffusion du système Gobelins sous forme de logiciel libre. Le système a été expérimenté intensivement à l'aide d'un spectre élargi d'applications parallèles dont Volrend, application de rendu volumique, qui est utilisée à des fins de démonstration et des applications fournies par EDF. Des applications OpenMP et MPI ont également fait l'objet de tests.

Le système Gobelins a été packagé pour permettre son installation sur tout type de grappe de PC. Des scripts d'installation ont été mis au point. Les manuels d'installation et d'utilisation ont été rédigés. Un serveur Web de documentation et de diffusion a été mis en place ( http://www.kerrighed.org/). Il permet le téléchargement du logiciel Gobelins disponible depuis le 20 novembre 2002 sous licence GPL.

Pagination en mémoire distante

Participant : Renaud Lottiaux.

Le concept de conteneur permet la gestion globale des pages dans une grappe de calculateurs. Ce concept permet de mettre en œuvre le partage des pages de mémoire vive entre processus ou threads s'exécutant sur des nœuds distincts ainsi que le partage des données de fichiers sous la forme d'un système de caches coopératifs . Cette année, nous avons étudié et mis en œuvre un mécanisme de pagination en mémoire distante s'appuyant sur les conteneurs. Couplé à un algorithme de remplacement global, ce mécanisme permet de réduire le nombre des accès aux disques en conservant le plus longtemps possible en mémoire les données utiles.

Ordonnancement global de processus

Participants : Christine Morin, Louis Rilling, Geoffroy Vallée.

Compte tenu de la quantité de ressources disponibles sur l'ensemble d'une grappe, il est important de définir une politique d'utilisation de ces ressources qui permette de tirer au mieux parti de toute la puissance disponible. La mise en place de cette gestion des ressources passe par la mise en œuvre d'un ordonnanceur global des processus sur l'ensemble des processeurs de la grappe.

Nous avons conçu et mis en œuvre dans le système Gobelins un ordonnanceur global dont l'architecture est décentralisée. Tous les composants de l'ordonnanceur sont instanciés sur chaque nœud de la grappe et jouent le même rôle. L'architecture de l'ordonnanceur est constituée au plus bas niveau de moniteurs qui analysent le déroulement de l'exécution au sein du système d'exploitation et qui peuvent envoyer des alarmes à l'ordonnanceur lorsqu'une dégradation des performances est observée. Le niveau intermédiaire de l'architecture est constitué de composants mettant en œuvre des politiques d'ordonnancement primitives traitant chacune d'aspects différents de l'exécution. L'ensemble des composants primitifs ont une interface commune qui permet de coupler différentes politiques primitives et de définir des priorités entre ces politiques.

La décision de migration d'un processus est prise au niveau supérieur de l'ordonnanceur global qui interagit avec les différents composants primitifs grâce à leur interface générique. Nous avons étudié plusieurs politiques primitives intéressantes : l'équilibrage de la charge processeur, l'activation d'un co-scheduling pour optimiser les applications utilisant un grain fin de synchronisation et de communication, la diminution du coût généré par le partage de mémoire sur la grappe et le placement des threads des applications parallèles.

Cette architecture permet d'étudier différentes politiques d'ordonnancement global. Chaque composant de l'architecture peut être chargé dynamiquement. L'architecture proposée permet aussi de construire simplement un système de batch léger pour limiter la charge globale de la grappe en différant l'exécution de certaines tâches ou en suspendant l'exécution de tâches grâce au mécanisme d'arrêt et reprise d'applications mis en œuvre dans le système Gobelins.

Parallèlement à l'étude de l'ordonnancement global, nous avons poursuivi nos travaux portant sur la mise en œuvre efficace des mécanismes de base de gestion de processus à l'échelle d'une grappe . Le mécanisme de migration de processus ou de threads d'une application parallèle fondée sur le modèle de communication par mémoire partagée est opérationnel . Une étude préliminaire des performances du mécanisme de migration de processus a été menée. Le mécanisme de migration de processus du système Gobelins offre de meilleures performances que celui du système Mosix. Ceci s'explique par l'utilisation du concept de conteneur pour la migration de processus dans le système Gobelins.

Migration de flux de données

Participants : Pascal Gallard, Christine Morin.

Un système d'exploitation traditionnel gère les données sous deux formes essentielles : les pages (ou blocs) et les flux de données. Deux types de périphériques sont distingués : les périphériques blocs comme les disques pour lesquels les données sont gérées en pages et les périphériques caractères comme l'écran, le clavier ou l'interface réseau pour lesquels les données sont gérées sous forme de flux de données.

Le concept de conteneur proposé dans le système Gobelins permet de gérer globalement les pages et par conséquent l'ensemble des périphériques blocs. Nous nous sommes intéressés cette année à la gestion globale des flux de données. Un flux de données possède en général deux extrémités qui dans un système comme Gobelins peuvent se trouver sur deux nœuds distincts. L'une des extrémités d'un flux de données doit également pouvoir être déplacée d'un nœud à l'autre, par exemple lorsqu'un processus fait l'objet d'une migration sur décision de l'ordonnanceur global ou suite à un changement de configuration de la grappe.

Nous avons proposé un système de gestion dynamique de flux de données répondant à ces exigences. Ce système a été mis en œuvre au sein du prototype Gobelins. Il permet actuellement de migrer, au sein d'une grappe, les sockets Unix et les pipes Unix, efficacement et de manière transparente pour les applications. À des fins de validation, des expérimentations sont en cours pour des applications parallèles fondées sur MPI (communication par messages).

La mise en œuvre des concepts de conteneur et de flux dynamique dans le système Gobelins permet à son ordonnanceur global de gérer des charges de travail constituées d'applications variées, séquentielles ou parallèles fondées sur les paradigmes de programmation traditionnels (communication par mémoire partagée ou par échange de message). Il n'existe pas à notre connaissance d'autres systèmes d'exploitation pour grappe doté d'un ensemble équivalent de fonctionnalités.

Entrées-sorties à haute performance

Participants : Renaud Lottiaux, Christine Morin, Gaël Utard.

L'utilisation optimale d'une grappe passe par la définition d'un système d'entrées-sorties à haute performance. Nous avons étudié un système de gestion de fichiers parallèle et distribué utilisant efficacement les disques de la grappe. Ce système s'appuie sur les conteneurs et en intègre les caractéristiques : cache coopératif et pré-chargement fondé sur de la prédiction. Une plate-forme assure le transfert de pages entre les nœuds, la cohérence du cache, le lien avec la projection mémoire, ainsi que le lien avec l'interface de lecture/écriture. Le système de fichier proprement dit vient se greffer au dessus de cette plate-forme.

Dans un premier temps, nous avons réalisé un prototype en adaptant des systèmes de fichiers existants et nous avons choisi d'assurer la haute disponibilité grâce à un système de RAID logiciel. Mais la plate-forme d'entrée-sortie permet également d'expérimenter des systèmes de fichiers totalement nouveaux, répondant mieux aux contraintes d'une grappe, et spécialisés selon le type d'application.

Dans le cadre de ce travail nous avons été amenés à développer un système de communication spécifique. Celui-ci permet le transfert très rapide d'une page mémoire d'un nœud à un autre, associée à quelques données de contrôle. Il permet également l'appel à distance de fonctions du noyau.

Support des applications OpenMP

Participants : Viet Hoa Dinh, Renaud Lottiaux, Christine Morin, Geoffroy Vallée.

OpenMP est le standard de fait des applications parallèles fondées sur le paradigme de programmation par mémoire partagée sur les machines multiprocesseurs à mémoire partagée. L'objectif du système à image unique Gobelins étant de donner d'une grappe l'image d'un multiprocesseur à mémoire partagée, nous avons tout naturellement étudié les mécanismes à intégrer dans ce système pour permettre l'exécution efficace d'applications OpenMP sur grappe.

Parmi les compilateurs OpenMP, le compilateur développé par Omni génère du code pour une interface Pthread Posix. Nos travaux ont donc porté sur la fourniture de cette interface par le système Gobelins car une telle approche présente l'avantage de limiter les modifications du compilateur OpenMP aux seules optimisations. Le concept de conteneur offre déjà le partage de données entre threads. Afin d'offrir une interface Posix complète, nous avons conçu et réalisé un système de synchronisation de processus efficace offrant des verrous, des sémaphores et des variables conditions pour des threads s'exécutant sur différents nœuds d'une grappe et susceptibles de migrer. Nous avons également été amenés à mettre en œuvre un mécanisme d'allocation dynamique de mémoire fonctionnant en environnement distribué. Les premières expérimentations effectuées ont permis de valider l'interface Pthread Posix du système Gobelins. Ces travaux devront être approfondis à des fins d'optimisation de l'exécution d'applications OpenMP sur grappe.

Haute disponibilité du système et des applications

Participants : Ramamurthy Badrinath, Pascal Gallard, Christine Morin, Geoffroy Vallée.

Les changements de configuration dans une grappe peuvent entraîner une variation de la quantité de ressources disponibles. Cette variation doit être prise en compte par les services de gestion globale des ressources. En outre, la suppression de ressources dans une grappe même suite à une défaillance ne doit pas nuire à la disponibilité de ces services.

Nous avons identifié plusieurs fonctionnalités de base nécessaires à la plupart d'entre eux pour la gestion des changements de configuration et avons proposé de les regrouper au sein d'un service commun de gestion dynamique des ressources, appelé Legolas, sur lequel s'appuient les autres services distribués du système pour le traitement des reconfigurations. Parmi les fonctionnalités du service Legolas, nous pouvons citer : un protocole d'intégration ou d'éviction d'un nœud, un protocole de détection de défaillance, un mécanisme permettant de modifier la répartition des gestionnaires de ressources sur les différents nœuds de la grappe en cas de reconfiguration et de localiser efficacement ces gestionnaires nomades . Le service Legolas a été mis en œuvre au sein du système Gobelins et a servi de base à la mise en œuvre du service de gestion dynamique des flux de données.

Grâce au service Legolas, le système d'exploitation de la grappe reste disponible en dépit de la défaillance d'un nœud. Cependant, la défaillance d'un nœud entraîne l'arrêt de l'exécution des applications utilisant ses ressources. Nous étudions des techniques de recouvrement arrière d'applications parallèles à intégrer au système Gobelins afin de décharger les programmeurs de la gestion complexe de la tolérance aux fautes.

Les travaux que nous menons visent à permettre l'établissement de points de reprise pour n'importe quelle application s'exécutant au dessus du système Gobelins : application séquentielle, application parallèle communiquant par mémoire partagée ou par échange de messages. À partir de l'étude des protocoles traditionnels de sauvegarde de points de reprise d'applications parallèles et de leurs optimisations, nous avons identifié un ensemble de fondements qui leur sont communs pour garantir l'existence d'une ligne de recouvrement. Nous avons proposé une modélisation des entités du système, à savoir les processus, les pages partagées et les messages, et des informations qui doivent leur être associées en vue de la mise en œuvre des protocoles de sauvegarde et de restauration de points de reprise d'applications parallèles. Nous avons montré comment mettre en œuvre efficacement dans ce cadre les différents protocoles de la littérature, protocoles de sauvegarde coordonnée de points de reprise dits pessimistes, protocoles de sauvegarde indépendante de points de reprise dits optimistes et protocoles de sauvegarde de points de reprise induite par les communications .

Les mécanismes communs aux différents protocoles ont été mis en œuvre au sein du système Gobelins. En outre, le mécanisme de migration de processus réalisé antérieurement a été généralisé afin de permettre la sauvegarde de l'état privé d'un processus. Ainsi, il est possible d'extraire l'état d'un processus du système et de choisir sa destination : réseau pour une migration de processus ou mémoire distante ou disque local ou distant pour la sauvegarde d'un point de reprise.

Tous ces mécanismes ont été expérimentés dans un premier temps pour des applications séquentielles et des applications parallèles à mémoire partagée. Un protocole de sauvegarde coordonnée de point de reprise dérivé de celui étudié dans est opérationnel et ses performances sont en cours d'évaluation.

Lorsque la mise en œuvre sera achevée, il sera possible de comparer expérimentalement sur une même plate-forme différentes techniques de recouvrement arrière pour les applications parallèles qu'elles soient fondées sur le modèle de communication par mémoire partagée (applications OpenMP, par exemple) ou par échange de message (applications MPI, par exemple). Ainsi, le programmeur pourra choisir le type de protocole de recouvrement arrière le mieux adapté à son application.

Système de communication fiable, portable et efficace pour la mise en œuvre de services systèmes distribués

Participants : Viet Hoa Dinh, Renaud Lottiaux.

Une première version d'un système de communication pour la mise en œuvre des services distribués du système Gobelins avait été réalisée. En 2002, l'architecture de ce système a été reconsidérée pour améliorer sa portabilité tout en conservant la possibilité d'optimiser ses performances pour certaines technologies de réseau.

Le nouveau système de communication est structuré en deux niveaux : le niveau supérieur offre l'interface envoyer/recevoir et les messages actifs aux services du système, le niveau inférieur est constitué de différents pilotes mis en œuvre dans des modules Linux, chacun adapté à une technologie de réseau particulière. Cette nouvelle version du système de communication présente l'avantage de pouvoir exécuter le système Gobelins sur tout type de grappe de PC sans recompilation du noyau. Le système de communication est auto-configurable.

Au niveau supérieur, nous avons introduit un protocole de contrôle de flux et amélioré le système d'acquittement des messages pour des raisons de performance.

Au niveau inférieur, nous avons conçu et mis en œuvre un pilote générique permettant d'assurer la portabilité du système Gobelins sur tout type de réseau, un pilote TCP développé initialement à des fins de mise au point mais qui peut servir également dans le cadre de fédérations de grappes et un pilote optimisé pour des réseaux Ethernet ou Gigabit Ethernet.

Une évaluation des performances des différentes configurations du système de communication a été menée sur des réseaux Fast Ethernet, Gigabit Ethernet et Myrinet.

Weblins : un serveur Web fondé sur Gobelins

Participant : Christine Morin.

Ce travail a été fait dans le cadre de la co-direction par C. Morin de la thèse de Ahmad Faour, de l'Université libanaise,

Le système Gobelins offre des fonctionnalités attrayantes pour servir de support à un serveur Web implanté sur une grappe. En particulier, les serveurs Web ont des contraintes de haute disponibilité, d'extensibilité et de performance, la performance se mesurant en nombre de requêtes indépendantes traitées par seconde et volume d'entrées-sorties. Une spécialisation des algorithmes implantés dans le système doit être effectuée pour répondre aux besoins des serveurs de données sur Internet. En particulier, les algorithmes de remplacement et de pré-chargement de données spécifiques doivent être étudiés. En outre, le placement des données et leur réplication sur les disques de la grappe doivent être effectués judicieusement pour une bonne utilisation de l'ensemble des ressources de la grappe en présence de données dont la popularité est variable.

Ces considérations nous ont amené à définir l'architecture de serveur Web Weblins sur grappe qui exploite les caractéristiques du système Gobelins tout en spécialisant les algorithmes de gestion globale des ressources.

Nous avons, cette année, réalisé un simulateur d'architectures de serveurs Web qui nous a permis de comparer l'architecture Weblins à d'autres architectures de serveurs Web fondées sur des grappes : architecture simple avec répartition des requêtes en tourniquet, de manière aléatoire ou avec priorité aux nœuds les moins chargés, architecture LARD décentralisée et architecture fondée sur le système Gobelins non modifié. Ce simulateur a été utilisé pour évaluer différents algorithmes de gestion globale des caches de données : LRU, LFU, GDSF, CGDSF (implanté dans Weblins).

Support système pour la fédération de grappes

Participants : Christine Morin, Louis Rilling.

Les grappes occuperont une position dominante sur le créneau de la haute performance. On peut imaginer qu'une grande entreprise disposera sur un ou plusieurs sites de différentes grappes de taille raisonnable. Plusieurs motivations peuvent conduire à fédérer ces grappes sur un réseau à très haut débit : utiliser dans un mode pair à pair les ressources disponibles de ces grappes pour optimiser les investissements informatiques, construire à partir de plusieurs grappes une infrastructure permettant d'exécuter occasionnellement des applications nécessitant des ressources dépassant les capacités d'une seule grappe, déployer des applications distribuées constituées de plusieurs composants coopérants, les différents composants s'exécutant sur différentes grappes.

Dans le contexte actuel, une hypothèse fondamentale pour les travaux sur les grilles de calcul est que les machines qui en constituent les nœuds sont fortement hétérogènes et exploitées sous des systèmes d'exploitation propriétaires. Pourtant, les évolutions actuelles laissent présager d'une beaucoup plus grande homogénéité : PC omniprésents, domination de deux systèmes d'exploitation sur le marché des PC, Linux et Windows. Face à cette homogénéisation des nœuds de la grille et dans le contexte visé, gérer les ressources des applications à grande échelle au sein de middleware tend à perdre de l'intérêt. L'empilement de services de gestion de ressources introduit en effet de la redondance de mécanismes et la possibilité de décisions contradictoires dans les différents niveaux.

Partant de ce constat, nous avons initié une activité de recherche visant à concevoir un système d'exploitation Grid-aware c'est-à-dire intégrant les mécanismes permettant de mettre en place une infrastructure pour exploiter les ressources d'une fédération de grappes pour des applications à grande échelle.

Pour ces travaux, nous faisons l'hypothèse que chaque grappe dispose d'un système à image unique tel que Gobelins. Il s'agit d'étudier les extensions à apporter à un tel système pour faciliter l'intégration d'une grappe au sein d'une fédération et satisfaire les exigences de performance des applications à grande échelle dans le cadre d'une fédération de grappe.


previous
next