LABORATOIRE D INFORMATIQUE DE NANTES-ATLANTIQUE UMR 6241 ÉCOLE DOCTORALE STIM, N. 503 «Sciences et technologies de l information et des mathématiques» Sujet de thèse pour 2013 Programmer des applications réparties Vers une approche modulaire et efficace de la causalité Directeur de thèse NOM, Prénom : MOSTEFAOUI, Achour Équipe d accueil : GDD Unité de recherche : LINA (UMR 6241) Courriel : Achour.Mostefaoui (at) univ-nantes.fr Téléphone : (+33/0) 2 51 12 50 31 Taux d encadrement : 50 % Nombre de thèses en cours : 2 Co-encadrant NOM, Prénom : GRALL, Hervé Équipe d accueil : Ascola Courriel : Herve.Grall (at) mines-nantes.fr Téléphone : (+33/0) 2 51 85 82 23 Taux d encadrement : 50 % Nombre de thèses en cours : 1 Financement prévu : MESR, CNRS-Région
Sujet de thèse pour 2013 Programmer des applications réparties Vers une approche modulaire et efficace de la causalité Résumé. La programmation d applications distribuées est difficile car elle suppose de rompre avec le modèle séquentiel pour intégrer la causalité inhérente à la répartition. Nous proposons de développer un cadre formel facilitant la programmation d applications réparties en restituant la causalité d une manière modulaire et pratiquement efficace. Mots clés. Programmation répartie Causalité Programmation chimique Modularité 2
Introduction En 2011, à la conférence SPLASH, l une des plus importantes dans le domaine des langages de programmation, un groupe de spécialistes s est réuni pour débattre de la question suivante : "Multicore, Manycore, and Cloud Computing : Is a New Programming Language Paradigm Required?" [TBB + 11]. C est qu en effet une convergence structurelle se dessine. Le nuage entoure non seulement les serveurs sur Internet mais aussi progressivement les cœurs sur une puce : d abord présente à grande échelle, la répartition s impose maintenant à petite échelle. Le sujet proposé s inscrit dans cette tendance puisque la thèse visera à faciliter la programmation d applications réparties. Contexte et problématique La programmation d applications réparties impose de rompre avec le modèle séquentiel d exécution, aujourd hui encore dominant, remplacé par un modèle concurrent, impliquant des évènements répartis qui ne peuvent pas s ordonner séquentiellement : la causalité, associée à un ordre partiel, succède à la séquentialité, associée à un ordre total. Cette thèse aura essentiellement pour but de proposer un cadre formel facilitant la programmation d applications réparties en restituant la causalité d une manière modulaire et pratiquement efficace. Concernant la causalité, elle intéresse l équipe GDD ; concernant la programmation répartie, elle intéresse l équipe Ascola. Elle sera donc l occasion de construire une collaboration fondée sur des compétences complémentaires. Problèmes et opportunités Le mécanisme fondamental d échange de données et de synchronisation dans les systèmes répartis est la communication par messages. Lors de l exécution d une application répartie, les événements internes des processus, les émissions et les réceptions de messages s ordonnent suivant un ordre non pas total mais partiel : c est la relation de précédence causale, introduite par Lamport en 1978. Si des événements indépendants peuvent être exécutés simultanément en parallèle, il arrive aussi fréquemment que l ordre de réception des messages doive être relié à l ordre d émission des messages. Précisément, alors que certaines applications ne nécessitent aucun ordre particulier sur la livraison des messages diffusés (e.g. les listes de diffusion), d autres nécessitent de respecter un ordre plus ou moins fort (synchronisation avec l émission ou non, dans ce cas, ordre causal, ordre atomique, ordre relatif, ordre total, etc.). Par exemple, une communication est dite synchrone si l émission et la réception sont synchrones. C est une contrainte forte qui peut être affaiblie. Une communication est alors dite causale si un message émis causalement avant un autre doit être livré avant celui-ci chez tous les destinataires communs. La mise en oeuvre d une telle communication est coûteuse et nécessite l utilisation soit de compteurs vectoriels (coûteux en espace et en taille des messages) soit de protocoles de communications (coûteux en temps de communication et moins tolérants aux 3
défaillances). Ces dernières décennies, de nombreuses solutions théoriques à ces problèmes de causalité ont été proposées et étudiées, et les coûts des solutions optimales sont connus [CB91, CBMT96]. On peut considérer qu aujourd hui, avec la généralisation des applications réparties, nous entrons dans une période où ces solutions théoriques doivent être mises en œuvre concrètement et efficacement dans les langages de programmation. De ce point de vue, deux problèmes apparaissent rapidement : la modularité et l efficacité. Les solutions proposées en théorie ont le défaut de résoudre les problèmes isolément, sans examiner leur possible interaction. Par exemple, que se passe-t-il lorsqu on utilise simultanément des canaux de communication aux propriétés différentes en matière de causalité? Comme on l a vu, les solutions théoriques peuvent être coûteuses. Cependant, elles reposent toutes sur une hypothèse : elles utilisent un mode de communication asynchrone. Si en théorie la communication est asynchrone, bien souvent en pratique, elle ne l est pas : il existe un temps de latence maximal. C est le cas par exemple d Internet. Peuton profiter de cette majoration de la latence pour améliorer pratiquement l efficacité des solutions théoriques? L objectif principal de la thèse est de répondre à ces questions, et donc de proposer des solutions modulaires et pratiquement efficaces aux problèmes de causalité dans les applications réparties. Travail demandé Objectifs Concernant la causalité, cette thèse va aborder deux aspects duaux. L un est relatif à la partie applicative en fournissant d une manière modulaire des canaux de communication répondant à des besoins spécifiques relatifs à la causalité. L autre est lié au système sousjacent pour essayer d en tirer le meilleur parti pour l implémentation de ces canaux de communication. Le premier aspect est lié aux modes de communication nécessaires à une application. De manière pratique, il est préférable de pouvoir développer une application en disposant de différents types de canaux de communication. Pour certaines messages, une communication asynchrone est suffisante. Pour d autres, une synchronisation entre l émission et la réception est requise. Entre ces deux cas limites, différentes contraintes peuvent être fixées, comme par exemple l ordre causal. Chaque canal est implémenté au dessus de canaux asynchrones, par une annotation des messages (par des estampilles) ou par un protocole particulier. Si ces implémentations ont été vérifiées isolément, il n existe pas actuellement de travaux étudiant leur interaction. Autrement dit, on aimerait pouvoir 4
déduire la correction et la complexité d une implémentation de plusieurs canaux de la correction et la complexité des implémentations de chaque canal. Le second aspect concerne le système sous-jacent et ses caractéristiques de communication. En effet pour rester général, on suppose généralement que le système est asynchrone c est-à-dire sans borne supérieure sur les temps de transmission des messages ni sur la vitesse relative des processus. En réalité de telles bornes existent le plus souvent mais sont assez élevées pour rendre des solutions fondées dessus inefficaces. Des travaux récents au Technion prospectent la redéfinition de la notion de causalité dans le cas où la communication est synchrone. En effet, dans un tel contexte, on peut avoir de l information concernant un site distant sans communiquer avec lui alors que dans le cas des systèmes asynchrones toute information distante est véhiculée par une séquence causale de messages. Ainsi, il est possible de déterminer si un processus ne fonctionne plus, en attendant, alors que dans le cas purement asynchrone, cette défaillance peut être confondue avec une communication infiniment lente. Avec l hypothèse d une communication synchrone (avec un délai), il devient possible d améliorer pratiquement les algorithmes conçus pour la communication complètement asynchrone, par exemple pour les traitements exceptionnels dus aux défaillances. Mener à bien ces extensions modulaires et efficaces des solutions existantes suppose un cadre formel, permettant non seulement de définir les implémentations mais aussi de raisonner afin de prouver leur correction et de déterminer leur complexité. Pour ce cadre formel, nous proposons un modèle chimique. La programmation chimique est un modèle abstrait construit sur une métaphore, la réaction chimique, et intégrant nativement la répartition et le parallélisme [BFM00, BB92]. Un programme, défini par un ensemble de règles décrivant des réactions chimiques, s exécute sur une machine abstraite chimique. Cette machine est naturellement répartie et permet d exprimer aisément du parallélisme, pour lequel les réactions s effectuent réellement simultanément (et non séquentiellement par entrelacement). C est avant tout un cadre sémantique [BB92], dans lequel il est possible d interpréter les langages ou calculs tant concurrents que répartis. Il sera ainsi facile d instancier le modèle formel pour l utiliser concrètement dans des applications. Précisément, le cadre formel s appuiera sur un modèle chimique et son langage associé, tous deux développés au sein d Ascola ces dernières années [LGL10, ADG + 12, A + 11]. Fondé sur une sémantique chimique, le modèle est entièrement formalisé, fournissant une spécification précise du langage et ouvrant la possibilité de développer des méthodes et techniques de raisonnement formel. Le langage est une implémentation fidèle du modèle, programmée en Scala : il permettra des expérimentations. Pour les preuves, un assistant à la preuve comme Coq pourra être utilisé pour formaliser le modèle, syntaxiquement et sémantiquement, et ses propriétés. Cette dernière activité pourra s appuyer sur les compétences développées dans l équipe Ascola [LG09]. 5
Plan de travail prévisionnel de l étude Le travail commencera classiquement par l état de l art : il s agira d étudier et de comprendre les solutions classiques aux problèmes de causalité. Suivra une étape importante, la formalisation des solutions dans un cadre chimique, ainsi que la preuve de leur correction. Ce travail pourra être mené en utilisant un assistant à la preuve, ce qui implique un investissement initial non négligeable. Cette première étape est indispensable pour la contribution principale de la thèse : l élaboration d extensions modulaires et efficaces aux solutions classiques pour la causalité. Ces extensions pourront être développées incrémentalement, avec à chaque fois une formalisation suivie d une expérimentation. Candidats Compétences Les candidats doivent avoir des connaissances de base en programmation concurrente et répartie et en sémantique des langages de programmation. De bonnes aptitudes à la formalisation sont requises. Déclarations de candidature et résultats universitaires connus Un candidat de l école des mines de Nantes, actuellement dans l option "Génie des systèmes informatiques", effectuera son projet de fin d études sur ce sujet mêlant la causalité et la programmation chimique. Il est intéressé par une poursuite en thèse. 6
Bibliographie [A + 11] Diana Allam et al. Model and formal architecture specification. Deliverable D1.2, CESSA ANR project, no. 09-SEGI-002-01, January 2011. [ADG + 12] Diana Allam, Rémi Douence, Hervé Grall, Jean-Claude Royer, and Mario Südholt. A Message-Passing Model for Service Oriented Computing. In Karl- Heinz Krempels and José Cordeiro, editors, WEBIST, 8th International Conference on Web Information Systems and Technologies, Porto, Portugal, April 2012. SciTePress Digital Library. [BB92] [BFM00] [CB91] Gérard Berry and Gérard Boudol. The chemical abstract machine. Theoretical Computer Science, 96(1) :217 248, 1992. Jean-Pierre Banâtre, Pascal Fradet, and Daniel Le Métayer. Gamma and the chemical reaction model : Fifteen years after. In Cristian Calude, Gheorghe Paun, Grzegorz Rozenberg, and Arto Salomaa, editors, Workshop on Multiset Processing, WMP 2000, volume 2235 of Lecture Notes in Computer Science, pages 17 44. Springer, 2000. Bernadette Charron-Bost. Concerning the size of logical clocks in distributed systems. Inf. Process. Lett., 39(1) :11 16, 1991. [CBMT96] Bernadette Charron-Bost, Friedemann Mattern, and Gerard Tel. Synchronous, asynchronous, and causally ordered communication. Distributed Computing, 9(4) :173 191, 1996. [LG09] [LGL10] Xavier Leroy and Hervà c Grall. Coinductive big-step operational semantics. Information and Computation, 207(2) :284 304, 2009. Mayleen Lacouture, Herve Grall, and Thomas Ledoux. CREOLE : a Universal Language for Creating, Requesting, Updating and Deleting Resources. In International Workshop on the Foundations of Coordination Languages and Software Architectures (FOCLASA 2010), 2010. [TBB + 11] S. Tucker Taft, Joshua Bloch, Robert Bocchino, Sebastian Burckhardt, Hassan Chafi, Russ Cox, Benedict Gaster, Guy Steele, and David Ungar. Multicore, 7
Manycore, and Cloud Computing : Is a New Programming Language Paradigm Required? In Proceedings of the ACM international conference on Object oriented programming systems languages and applications, SPLASH 11, pages 165 170. ACM, 2011. 8
CV du directeur de thèse Achour Mostefaoui est professeur à l Université de Nantes. Il est membre et responsable adjoint de l équipe GDD. Il est aussi responsable du Master 2 Compétences Complémentaires en Informatique (M2CCI). Son activité de recherche est centrée sur les systèmes répartis et aborde principalement la synchronisation et la tolérance aux fautes à travers les protocoles de communication et la conception et la mise en oeuvre de structures de données distribuées. Achour Mostefaoui a soutenu sa thèse de doctorat et son habilitation à diriger des recherches à l Université de Rennes 1 où il a été maître de conférences jusqu en 2011. 9
CV du co-encadrant Hervé Grall est chargé de recherche et d enseignement à l école des mines de Nantes. Il est membre de l équipe Ascola et responsable de l option "Génie des systèmes informatiques". Ses recherches concernent les langages de programmation et leur sémantique, ainsi que les méthodes formelles. Elles ont particulièrement eu pour domaine d application la sécurité. Avant de rejoindre l école des mines de Nantes, il a travaillé pendant dix-huit mois à Trusted Logic, une start-up issue de l INRIA spécialisée dans la sécurité pour les systèmes embarqués. Il est ingénieur civil et docteur en informatique de l école nationale des ponts et chaussées. 10