previous up next contents
Précédent : Contrôle réparti Remonter : Problèmes fondamentaux Suivant : Cohérence de mémoires

Détection de propriétés

 

``Dans quelle mesure est-on capable d'observer le comportement d'un programme réparti alors même qu'il s'exécute et ce sans perturber l'observation ?''. Telle est la question que nous nous sommes posés. Contrairement à une exécution d'un programme séquentiel, les événements d'une exécution d'un programme réparti ne sont ordonnés que partiellement. Cette particularité induit l'impossibilité pour un observateur quelconque de capter, à un moment donné, l'état global cohérent (n-uplets d'états locaux pouvant coexister à un instant donné) dans lequel se trouve le programme réparti s'exécutant.

Plutôt que de tenter de capter le comportement réel de l'application répartie en cours d'exécution on peut s'intéresser à l'ensemble des observations possibles de l'exécution (telle propriété est-elle vérifiée pour l'ensemble des observations ? pour une observation au moins ?), ou uniquement à la structure des interactions entre processeurs induite par les échanges de messages (tel état local a-t-il été produit avant tel autre ?).

En collaboration avec Ö. Babaoglu de l'université de Bologne, nous avons placé ces deux approches sous un modèle plus général reposant sur le parcours d'un graphe étiqueté, orienté et sans circuit. Le modèle proposé permet de dériver des algorithmes qui ont pour objet de vérifier si toutes ou au moins une observation (séquences d'états globaux) décrit un motif inclus dans un langage régulier spécifié au moyen d'un automate. Ce modèle permet également de reformuler un algorithme que nous avions proposé en 1994 (prédicats réguliers) et qui travaille à la volée sur le graphe des états locaux.

En collaboration avec C. Jard et G.V. Jourdan du projet PAMPA, nous avons montré comment calculer au vol une abstraction de l'ordre de causalité entre les événements de l'exécution répartie.

Les algorithmes sur le graphe des états locaux et ceux sur l'ordre partiel entre événements peuvent être employés si l'on désire que la détection de la propriété recherchée se fasse dès l'occurrence de celle-ci. En revanche ils ne tiennent compte que des chemins dans le graphe considéré (séquences d'états locaux ou chaînes dans l'ordre). Nous avons défini un algorithme permettant de tenir compte de la structure complète du graphe, tant dans la description de la propriété recherchée que dans l'algorithme ; cet algorithme a été proposé en collaboration avec V.K. Garg et A. Tomlinson de l'université du Texas à Austin.

La détection de propriétés sur les états globaux cohérents reste coûteuse en temps et en espace mémoire (elle nécessite la construction de l'ensemble de ces états). On peut se limiter comme précédemment au calcul sur l'ordre de causalité ou sur le graphe des états locaux, mais on peut aussi chercher à trouver les classes de propriétés sur les états globaux qui ne nécessitent pas la construction du treillis des états globaux. C'est dans cette optique que nous avons étudié le problème de la détection des conjonctions de prédicats locaux. Avec Mukesh Singhal de l'université de l'état de l'Ohio et Masaaki Mizuno de l'université de l'état du Kansas, nous avons montré que ce type de propriété pouvait être détecté en cours d'exécution sans émettre de messages supplémentaires et sans désigner un processus particulier chargé d'effectuer la détection.


previous up next contents
Précédent : Contrôle réparti Remonter : Problèmes fondamentaux Suivant : Cohérence de mémoires