Projet Adp

previous up next contents
Précédent : Présentation générale et objectifs Remonter : Projet ADP, Algorithmes distribués et Suivant : Grands domaines d'application



Fondements scientifiques

Résumé : La compréhension des fondements des algorithmes répartis passe par la recherche des concepts sous-jacents et de nouveaux paradigmes. Elle doit permettre de concevoir de nouveaux algorithmes répartis, fournissant des services de base tels que le contrôle de la compétition pour les ressources, la détection du passage d'un calcul dans un ensemble d'états particuliers, la collecte d'informations réparties, l'incidence de la causalité, la tolérance aux défaillances, etc. Les travaux actuels s'articulent autour des thèmes ci-dessous.

Détection de propriétés

 Mots-clés : algorithme réparti, causalité, détection de propriétés, détection décentralisée


Résumé : La détection de propriétés dans les exécutions réparties est un problème fondamental qui se pose pour le concepteur d'environnements de programmation répartie ainsi que pour le contrôle des programmes répartis. Malheureusement, du fait de la structure de l'ensemble des états globaux cohérents d'une exécution répartie, la détection de propriétés est un problème NP-complet. Pour ne pas être limités par ces caractéristiques, nous nous sommes plus particulièrement intéressés à la restriction de la structure sur laquelle sont détectées les propriétés. Nous avons présenté le problème de la détection de propriétés comme une variante d'un problème de reconnaissance de langage. Cette stratégie nous a notamment permis de reformuler différents algorithmes de détection de propriétés dans un cadre général unique ainsi que d'en proposer de nouveaux.

La détection de propriétés dans les exécutions réparties est un problème fondamental qui se pose pour le concepteur d'environnements de programmation répartie ainsi que pour le contrôle des programmes répartis. Pour le concepteur d'environnements, il s'agit essentiellement de pouvoir fournir un outil de compréhension de ces programmes. Par exemple, lors d'une séance de déboggage, il peut demander si une somme de variables réparties représentant une ressource bornée est supérieure à une constante fixée, s'il existe une conjonction d'états locaux qui forment un état global cohérent tel que chacun de ces états locaux respecte une propriété donnée. Pour le contrôle de programmes répartis, la détection de comportement est un aspect du problème. Ainsi avant de mettre en oeuvre un algorithme de résolution d'interblocage, il faut savoir détecter si un sous-ensemble de processus est en situation d'interblocage.

Dans son cas le plus général, la détection de propriétés est un problème NP-complet. L'observation du comportement d'une exécution par des observateurs répartis pouvant donner lieu à des observations différentes pour un même comportement, il est nécessaire de générer toutes les observations possibles [SM94]. Ceci est dû à la structure de l'ensemble des états globaux cohérents d'une exécution répartie qui au pire, a une taille exponentielle par rapport au nombre de processus mis en jeu. Pour ne pas être limité par ces caractéristiques dans la conception d'algorithmes de détection, il est alors essentiel d'étudier ce problème de manière moins générale, soit en restreignant les types de propriétés que l'on souhaite détecter, soit en restreignant la structure sur laquelle sont détectées les propriétés.

Historiquement, c'est la restriction aux types de propriétés qui a d'abord été employée à travers la distinction propriétés stables/propriétés instables . Une propriété est stable si une fois vérifiée dans une exécution répartie, elle le demeure. On peut montrer qu'il existe des algorithmes de coût polynômial pour résoudre le problème de leur détection. Toutefois le problème demeure car la classe des propriétés stables ne rassemble qu'un nombre limité de cas particuliers.

Toujours dans le domaine de la restriction au type de propriétés, une voie plus prometteuse a été récemment étudiée. Il s'agit de la limitation syntaxique dans l'expression même des propriétés. C'est dans cette approche que s'inscrivent les travaux de V. Garg concernant les conjonctions de prédicats locaux [GW94] et les prédicats linéaires ou semi-linéaires [CG95], ainsi que les travaux de Stoller et Schneider sur la décomposition d'expressions en conjonctions.

Au sein de l'équipe ADP, nous nous sommes plus particulièrement intéressés à la restriction de la structure sur laquelle sont détectées les propriétés. Nous avons présenté le problème de la détection de propriétés comme une variante d'un problème de reconnaissance de langage. Le calcul réparti est modélisé sous la forme d'un graphe orienté acyclique. Les sommets du graphe correspondent à des états (locaux ou globaux). Les arcs du graphe sont le reflet des relations de précédence causale qui existent entre les états. Des prédicats de bases (locaux ou globaux) sont exprimés sous forme d'expressions booléennes portant sur les valeurs des variables gérées par les processus de l'application. Ces prédicats de base sont identifiés de manière unique par une lettre (ou symbole). Par définition, un symbole est associé à un sommet du graphe si l'état correspondant satisfait le prédicat de base ainsi identifié. L'ensemble des symboles spécifiés constitue un alphabet. Nous appelons motif tout langage défini sur cet alphabet. Le rôle d'un algorithme de détection est de comparer un ensemble de motifs spécifiés avec l'ensemble des motifs observés au cours de l'exécution. Cette comparaison se fait en visitant les sommets du graphe selon la stratégie du tri topologique. Une règle de satisfaction (ou opérateur modal) précise les modalités de comparaison. En choisissant le type de graphe (états globaux, états locaux ou événements) nous pouvons régler le niveau de complexité de l'algorithme. Cette stratégie nous a notamment permis de reformuler différents algorithmes de détection de propriétés dans un cadre général unique ainsi que d'en proposer de nouveaux [BFR96].

Cohérence d'objets dupliqués

 Mots-clés : algorithme réparti, causalité, cohérence, mémoire virtuellement partagée, transactions


Résumé : La conception d'applications réparties, dans le modèle de programmation par objets partagés, consiste à donner aux processus la vision d'un seul espace d'adressage aux objets. Pour des raisons de performance, les objets sont dupliqués. Le problème est alors le maintien de la cohérence entre les copies pour chaque objet, à savoir la garantie d'un niveau de synchronisation entre les gestionnaires de mémoires correspondant à la sémantique du critère de cohérence offert aux applications utilisant cette mémoire.

Un grand nombre d'applications parallèles utilisent un modèle de programmation fondé sur le partage d'objets. Afin d'exécuter celles-ci sur des machines parallèles à mémoire répartie, il est nécessaire de donner aux processeurs un seul espace d'adressage pour l'ensemble des objets. Pour améliorer les performances, les objets sont généralement dupliqués. Le problème à résoudre est alors le maintien de la cohérence entre les copies de chaque objet. Cela requiert des définitions précises de la cohérence des objets partagés et des protocoles capables de les mettre en oeuvre. La plupart de ces protocoles sont définis en termes du concept de groupe [Bir97]. Un groupe est l'entité logique qui rassemble l'ensemble des copies d'un même objet. Le problème scientifique est alors de définir et de réaliser des primitives de diffusion fiable qui permettent de dupliquer les écritures de façon cohérente sur l'ensemble des copies de chaque objet. Si les objets ne sont que partiellement répliqués, les protocoles doivent tenir compte des relations de causalité entre les écritures sur l'ensemble des objets afin que l'ensemble des copies soit cohérent.

Points de contrôle et retour arrière

 Mots-clés : algorithme réparti, causalité, points de contrôle, cohérence, tolérance aux défaillances


Résumé : Déterminer des points de contrôle globaux cohérents est une tâche importante qui trouve des applications tant dans le domaine de la tolérance aux défaillances (points de reprise à partir desquels un calcul peut être relancé après défaillance) que dans la détection de propriétés des exécutions réparties (coupes cohérentes). De telles déterminations sont non triviales dans le cadre des systèmes répartis asynchrones. La théorie des Z-chemins de Netzer et Xu énonce qu'un tel chemin entre deux points de contrôle locaux révèle une dépendance qui leur interdit d'appartenir à un même point de contrôle global cohérent.

Lors de l'exécution répartie d'une application, un point de contrôle global est un ensemble de points de contrôle locaux (états locaux), un par processus participant à l'exécution. La détermination d'un point de contrôle global cohérent est un problème important dans de nombreux domaines concernés par les applications réparties (résistance aux défaillances, mise au point répartie, détection de propriétés, etc.). De nombreux protocoles ont été proposés pour déterminer des points de contrôle locaux afin qu'ils forment des points de contrôle globaux cohérents [BHMR95,EJW96]. Si les points de contrôle locaux sont sélectionnés de manière non coordonnée, il est possible que ceux-ci ne puissent former aucun point de contrôle global cohérent (ce risque est connu sous le nom d'effet domino [Ran75]). Une forme de coordination est donc nécessaire si l'on veut éviter - ou diminuer - cet effet. Les techniques de calcul d'état global cohérent introduites par Chandy-Lamport [CL85] sont fondées sur une coordination explicite utilisant des messages de contrôle supplémentaires. En général, cette forme de coordination impose à tous les processus de prendre des points de contrôle locaux lorsque l'un d'entre eux décide d'en prendre un, même en l'absence de communication due à l'exécution répartie. Une autre forme de coordination, implicite, utilise des informations de contrôle véhiculées par les messages de l'application (technique de piggybacking). Pour cette raison, elle est connue sous le nom de coordination induite par les communications (communication-induced checkpointing). Dans cette approche, des points de contrôle locaux sont sélectionnés de manière non coordonnée (points de contrôle de base) et le protocole impose des points de contrôle locaux supplémentaires, appelés points de contrôle forcés, de manière à assurer la progression des points de contrôle globaux cohérents. Les points de contrôle forcés sont pris sur la base des informations de contrôle véhiculées par les messages de l'application. C'est cette approche qui a été particulièrement étudiée dans notre équipe depuis l'année 1995.

Études dans le cadre de la notion classique de cohérence

Le fait que deux points de contrôle locaux ne soient pas liés causalement constitue une condition nécessaire pour appartenir à un même point de contrôle global cohérent. Malheureusement, cette condition n'est pas suffisante. Les points de contrôle locaux peuvent avoir des dépendances cachées (c'est-à-dire non captables par un mécanisme d'estampillage) qui les empêchent de participer au même point de contrôle global cohérent. Afin de capter l'ensemble des dépendances liant les points de contrôle locaux, Netzer et Xu [NX95] ont introduit la notion de Z-chemin entre points de contrôle locaux. Ils ont de plus démontré le théorème fondamental suivant: un ensemble quelconque de points de contrôle locaux peut être étendu pour former un point de contrôle global cohérent si, et seulement si, il n'y a pas de Z-chemin connectant deux points de contrôle de cet ensemble. Si, dans une exécution répartie, on ne considère que les points de contrôle locaux et leurs relations de dépendance, on obtient une abstraction de cette exécution répartie (cette abstraction ignore tous les états locaux qui ne sont pas des points de contrôle locaux). Une question importante est alors: ``cette abstraction est-elle cohérente?'' Cette question peut être abordée dans deux contextes différents, selon la notion de cohérence particulière considérée pour l'abstraction définie par les points de contrôle.

Dans le premier cas, l'abstraction est cohérente si tout point de contrôle local appartient à au moins un point de contrôle global cohérent. En d'autres termes, il n'y a pas de point de contrôle local qui s'avère inutile du point de vue de la construction des points de contrôle globaux cohérents (du point de vue opérationnel ceci élimine l'effet domino lors de la construction des points de contrôle globaux). Netzer et Xu ont montré, au niveau de l'abstraction, qu'il n'y a pas de point de contrôle inutile si, et seulement si, aucun Z-chemin n'est un cycle (Z-cycle). Il s'agit alors de traduire cette propriété au niveau opérationnel et d'en déduire des protocoles efficaces, notamment dans le cadre de l'approche coordination induite par les communications (conception et analyse de protocoles de détermination de points de contrôle forcés prévenant l'occurrence de points de contrôle inutiles).

Une seconde notion de cohérence pour l'abstraction que constitue un ensemble de points de contrôle locaux réside dans l'absence de relations de dépendance cachée entre ces points de contrôle locaux. Cette notion de cohérence, plus forte que la précédente, a été proposée par Wang [Wan97]. Appelée propriété RDT (pour Rollback-Dependency Trackability), elle se révèle particulièrement utile pour résoudre des problèmes tels que le calcul au vol du point de contrôle global minimal cohérent auquel appartient un point de contrôle local donné (dans [Wan97] d'autres exemples de problèmes dont la solution est facilitée lorsque les points de contrôle définis lors d'une exécution satisfont la propriété RDT. A titre d'exemples, les points de contrôle globaux cohérents minimaux facilitent la recherche d'erreurs logicielles et la relance des exécutions après la détection d'un interblocage).

Extensions de la notion de cohérence

Un examen approfondi des notions de cohérence d'états globaux (ou de points de contrôle globaux) fait apparaître que la notion usuelle, fondée sur la causalité, ne représente qu'un aspect du problème. C'est pourquoi d'autres modèles de cohérence doivent être envisagés. Deux modèles, en particulier, présentent un grand intérêt pratique. Ce sont, respectivement, l'absence de messages en transit (transitlessness), duale de la notion de cohérence classique, et la cohérence forte, réunion de la cohérence classique et de l'absence de message en transit. La cohérence classique considère des points de contrôle globaux dans lesquels tout message est enregistré comme reçu seulement s'il y est enregistré comme émis. La cohérence transitless considère des points de contrôle globaux dans lesquels tout message doit être enregistré comme reçu si il y est enregistré comme émis. La cohérence forte considère des points de contrôle globaux dans lesquels tout message est enregistré comme reçu si et seulement si il y est enregistré comme émis. Le problème consiste alors à définir des formalismes permettant d'étendre à ces modèles de cohérence la condition nécessaire et suffisante pour qu'un ensemble de points de contrôle locaux puisse faire partie d'un point de contrôle global cohérent. Cette étude théorique sert de fondement à la conception de protocoles assurant la cohérence forte en combinant les deux techniques de points de contrôle forcés et de sauvegarde des messages (logging), ainsi qu'à l'étude des compromis entre ces deux techniques.

Extension des modèles de calcul

Les problèmes de cohérence de points de contrôle ont presque toujours été posés et étudiés dans le cadre du modèle de calcul réparti asynchrone fondé exclusivement sur l'échange de messages. Ce cadre peut être élargi en considérant un modèle générique de calcul réparti asynchrone, fondé sur une relation de causalité générale. Ce modèle recouvre aussi bien le modèle à mémoire partagée, que différents modèles à échange de messages tels que le modèle fiable point-à-point, le modèle non fiable ou encore le modèle à diffusion (multicast). Il s'agit alors de donner une définition générique de la cohérence, puis de répondre à la question fondamentale: exprimer une condition nécessaire et suffisante pour qu'un ensemble de points de contrôle locaux puisse faire partie d'un point de contrôle global cohérent.

Contraintes non-fonctionnelles

 Mots-clés : algorithme réparti, résistance aux défaillances, temps réel, communication de groupe, consensus


Résumé : Dans un système réparti asynchrone, il est important de pouvoir concevoir des applications tolérant les défaillances tout en garantissant le respect de contraintes temps-réel. Le concept de groupe s'avère dans ce cas particulièrement intéressant. Développer les services offerts dans un groupe en utilisant comme brique de base une solution au problème du consensus est une approche novatrice présentant de nombreux avantages. En particulier, le résultat d'impossibilité de Fischer-Lynch-Paterson peut être circonscrit à ce niveau.

Considérer qu'un système réparti est asynchrone est une hypothèse attrayante (car plus générale et réaliste). Cependant, elle semble difficilement conciliable avec la prise en compte de critères de qualité de service tels que la tolérance aux défaillances et les contraintes temps-réel. Un des axes de recherche du projet ADP est consacré à la conception et au développement de services permettant de répondre efficacement à ces nouvelles exigences dans un environnement distribué asynchrone.

La sûreté de fonctionnement ne peut être garantie que pour des types de défaillances préalablement identifiés. Dans le cadre de cette activité, nous considérons les défaillances de type panne franche (crash): chaque processus peut, soit s'exécuter correctement, soit s'interrompre brutalement (et définitivement) suite à une panne ou une agression extérieure. A condition de pouvoir coordonner efficacement l'activité des processus dupliqués, le concept de groupe se révèle être une excellente technologie middleware pour concevoir des mécanismes de tolérance aux défaillances. Pour mettre en oeuvre ce concept, il convient d'apporter des solutions efficaces à divers problèmes d'accord entre processus. En particulier, les processus appartenant à un même groupe doivent être unanimes en ce qui concerne l'identité des membres qui composent le groupe (membership) et l'ordre dans lequel les messages qui leur sont adressés seront délivrés (diffusion ordonnée).

Des travaux récents ont mis en évidence le lien qui existe entre les problèmes nécessitant l'obtention d'un accord (élection, diffusion ordonnée, validation atomique non-bloquante, gestion des membres d'un groupe, etc) et le problème abstrait du consensus. De fait, ce problème élémentaire est l'objet de nombreux travaux de recherche depuis quelque années. Le résultat le plus important est malheureusement négatif [FLP85]: ce problème fondamental ne peut pas être résolu dans des systèmes asynchrones dès lors que les processus sont susceptibles de stopper prématurément leur exécution. Afin de surmonter ce résultat d'impossibilité, Chandra et Toueg [CT96] ont augmenté le modèle asynchrone en introduisant la notion de détecteur de défaillances. Un détecteur est associé à chaque processus et est chargé de détecter les défaillances externes. La mise en oeuvre du mécanisme de détection se fait en définissant des délais de garde: un processus est suspecté si il ne s'est pas manifesté avant l'expiration du délai de garde. Cela signifie que (1) la détection d'une défaillance réelle est généralement différée et que (2) un détecteur de défaillances peut commettre des erreurs en suspectant à tort un processus d'avoir stoppé son exécution. Chandra et Toueg définissent huit classes de détecteurs de défaillance en caractérisant chacune d'entre elles par une propriété de complétude et une propriété d'exactitude. Une propriété de complétude définit des contraintes concernant la détection des processus réellement arrêtés tandis que la propriété d'exactitude vise à limiter les suspicions erronées que peut commettre un détecteur de défaillances.

Parmi ces classes, la classe dénotée $\Diamond {\cal S}$ est particulièrement intéressante puisqu'il s'agit de la classe la plus faible permettant de résoudre le consensus [CHT96]. Cette classe est caractérisée par une propriété de complétude forte (tout processus défaillant finit par être suspecté de façon permanente par tout processus correct) et une propriété de précision faible inéluctable (il existe un instant à partir duquel un processus correct ne sera plus jamais suspecté par aucun processus correct). En s'appuyant sur des détecteurs de défaillance de cette classe et à condition que les canaux de communication soient fiables et qu'une majorité de processus ne subissent pas de défaillances, des algorithmes déterministes permettent de résoudre le problème du consensus. Tous s'appuyent sur le paradigme du coordinateur tournant mais diffèrent par leur complexité en temps et en nombre de messages. L'utilisation de tels algorithmes comme brique de base dans la résolution de problèmes d'accord, et par conséquent leur utilisation dans la gestion des groupes de processus dupliqués, est actuellement un axe de recherche important.

Comme indiqué précédemment, nous souhaitons intégrer la notion de contrainte temps-réel dans les solutions que nous proposons aux problèmes d'accord ainsi que dans les services de duplication mis en oeuvre pour garantir la sûreté de fonctionnement. Prendre en compte des contraintes temps-réel nécessite ``à un niveau ou à un autre'', de considérer le temps physique. C'est pour cela que nous comptons remplacer le modèle ``totalement'' asynchrone par le modèle ``asynchrone temporisé''. Ce modèle réaliste est défini par la caractéristique suivante. Tout processus peut définir des délais maximaux sur les temps de transfert et de traitement. Mais comme le support est asynchrone, ces délais peuvent être violés: dans ce cas, l'application en est avertie (c'est la notion de fail-awareness décrite dans [FC96]) et réagit par un traitement d'exception approprié.

La définition de ``bons'' délais, dépend du support et de sa charge en ``régime de croisière''; les manquements à ces délais n'apparaissent qu'en périodes d'instabilité dûes à des surcharges occasionnelles ou à l'occurrence de situations imprévisibles.

Protocoles pour les applications multimédia réparties

 Mots-clés : application répartie, multimédia, synchronisation, contrainte temporelle, réseau à haut débit, contrôle de trafic, ATM, Internet


Résumé : Dans le domaine des protocoles et des réseaux, deux points sont actuellement incontournables: le contrôle de trafic et la diffusion. Les méthodes et les protocoles pour rendre efficace la transmission de flux dans le cadre des réseaux à haut débit sont actuellement très étudiés.

Les applications multimédias réparties, qui constituent notre domaine d'application, et plus précisément les applications de téléconférence, nécessitent la prise en compte de ces deux points pour assurer un service convenable aux utilisateurs. Deux approches peuvent être discernées pour apporter une solution à ces problèmes: la première propose d'intégrer dans les équipements internes du réseau les dits mécanismes (qui sont donc internes au réseau), la deuxième se propose de placer ces mécanismes au sein des équipements d'extrémité (internes aux applications). Si la première approche a le mérite de permettre une exploitation fine des informations internes du réseau, elle a comme inconvénient d'augmenter la charge qui est déjà le lot des routeurs ou autres commutateurs. Parmi les points d'étude qui découlent de cette problématique, nous avons étudié le contrôle d'espacement et le contrôle de congestion.



previous up next contents Précédent : Présentation générale et objectifs Remonter : Projet ADP, Algorithmes distribués et Suivant : Grands domaines d'application