Checkpointing
Transcription
Checkpointing
Techniques de reprise sur sauvegarde! en environnement réparti 2! Reprise sur sauvegarde (rollback- recovery) Modèles d'exécution Master SAR – M2 ARA! [email protected]! Applications réparties composées de processus communicants Transparents originaux de Pierre Sens Processus déterministes : définis par un état initial et une séquence d'événements Processus non déterministes Définitions - rappels Principe Points de reprise non coordonnés Les processus sauvegardent leur état sur support stable pour prévenir les pannes éventuelles Points de reprise de coordonnés rollback failure checkpoint Journalisation Panne => reprise à partir d'un état antérieur Introduction Non coordonné Coordonné Journalisation Conclusion 3! 4! En réparti : Problème de cohérence! Point de reprise d’un processus isolé Maintenir la cohérence du système ! Tout effet doit être précédé de sa cause! ⇒ Dans les systèmes répartis :! Tout message reçu doit être préalablement émis! Copie du contexte sur support fiable (mécanisme lourd) Pour réduire le coût : • Méthodes incrémentales Sauvegarde limitée aux données mises à jour (pages modifiées) • Sauvegarde non intrusive Continuer l’exécution pendant la réalisation du point de reprise Problème : risque de sauvegarder un état incohérent (a,b) b → b' a Copy-on-write : recopie des pages protégées au moment de l'écriture Pre-copying : recopie locale du point de reprise Introduction Non coordonné Coordonné Journalisation Conclusion b' cohérent Introduction incohérent Non coordonné Coordonné cohérent Journalisation Conclusion 5! 6! Processus communicants : Contexte Paradoxe temporel et effet domino! retour arrière Monde Extérieur « défaire » une émission => « défaire » une réception ! Output Input P1 P2 X P X P3 X Applications réparties X P4 X P5 Echange de messages X X R X X S X X Q retour arrière Ligne de recouvrement Introduction Non coordonné Coordonné Journalisation Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion 7! 8! Intéraction avec le monde extérieur Impossible de « défaire » les actions extérieures => « Validation » des envois vers l ’extérieur (output commit)! Support stable Support qui résiste aux fautes! 1 Faute : Support stable = un processus distant (en mémoire volatile)! (Targon-32)! Monde Extérieur Fautes transitoires : Support stable = disque local! (DAWGS, Condor)! Fautes permanentes : Support stable = Système de fichiers répliqué ! (STAR)! P Q R S Introduction Non coordonné Coordonné Journalisation Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion 9! 10! Techniques de reprise sur sauvegarde Point de reprise non coordonnés! Points de reprise non coordonnés Technique naïve! Trouver une ligne de recouvrement Sauvegarde locale après chaque émission! Théoriquement bon! Pas de message orphelin => pas d'effet domino! Défaillance entre l'envoi et la sauvegarde => retour à la sauvegarde précédente! Faible surcoût mémoire (une seule sauvegarde par nœud)! Points de reprise coordonnés Coordination des processus lors des points de reprise L’ensemble des derniers points de reprise forme une ligne de recouvrement Faute => reprise des processus à partir de leur dernier point de reprise Pas optimal en pratique! Coût prohibitif de la sauvegarde pour les nœuds qui émettent beaucoup! Rollback important pour les noeuds émettant peu mais recevant/traitant beaucoup! Journalisation Sauvegarde des événements Faute => rejouer le même scénario Introduction Non coordonné Coordonné Sauvegardes indépendantes de l’application! Pb : trouver une ligne de recouvrement cohérente! Construction centralisée d'un graphe de causalité! Algorithmes de recouvrement décentralisés! Journalisation Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion 11! 12! Déterminer la ligne de recouvrement Point de reprise non coordonnés! Graphe de dépendance des reprises (rollback dependency graph ) Construction centralisée d'un graphe de causalité! Chaque processus maintient un graphe localement! Graphe de dépendance directe entre ses points de reprise et ceux distants ! Recouvrement! 1. 2. 3. 4. b) Diffusion d'une requête! Collecte des graphes locaux => construction d'un graphe global Déterminer la ligne de recouvrement! Reprise des exécutions Ci,y Pi Ii,x Ci,x Ci,y Ci,x Cj,y Ci,x m Cj,y Pj devient devient Récepteur de mise à jour du graphe en mémoire volatile (checkpoint volatile) : Ci,x --> Cvolatile Rollback dependency graph [Bhargava 88, Wang 95]! Checkpoint graph [Wang 93] Non coordonné Ci,x Pi Chaque message estampillé par <Intervalle exp. (i,x)> Deux approches par graphes! Introduction a) Coordonné Journalisation Point de reprise => Ecriture du graphe sur support stable Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion Graphe de reprise : Exemple C 0,0 P0 C 0,1 • • P1 C 2,0 • C 2,1 • C 1,1 C 1,0 • • C 2,0 C 2,1 C 3,0 C 3,1 • • • Pi C 2,2 devient C 0,2 • Initialement marqué C Volatile0 • C 1,3 C 1,2 • • • • C Volatile3 C 3,2 Coordonné CVolatile0 C1,0 C1,1 C1,2 C1,3 C2,2 CVolatile2 • C2,0 C2,1 C3,0 C3,1 • • • • Reprise à partir des premiers points de reprise non marqués Non coordonné C0,2 • • • • C0,1 • C Volatile2 C 2,2 C0,0 • C Volatile1 Journalisation Ci,x Cj,y Cj,y Pj • • Introduction Ci,x • C 3,2 • C 0,1 • • • • C 0,0 • C 3,1 C 3,0 P3 Graphe de points reprise (checkpoint graph) C 1,3 C 1,2 • P2 14! C 0,2 • C 1,1 • C 1,0 13! • • • • • • C3,2 CVolatile3 • Initialement marqué CVolatile1 • • Remarque : Graphe utilisé aussi pour le GC des points de reprise Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion 15! Graphe de points de reprise : ligne de recouvrement RootSet = {ensemble des derniers points de reprise (PR)} Marquer le point de faute & tous les PR accessibles depuis les membres du RootSet TQ (au moins 1 membre du RootSet est marqué) { remplacer dans le RootSet chq PR marqué par son prédécesseur sur le même processus marquer tous les PR accessibles depuis les membres du RootSet } La ligne de recouvrement est alors constituée par les membres du RootSet C0,0 C0,1 C0,2 C1,0 C1,1 C1,2 C1,3 C2,0 C2,1 C2,2 CVolatile2 C3,0 C3,1 • • • • • • • • • • CVolatile0 • • • • C3,2 CVolatile3 • Initialement marqué CVolatile1 16! Points de reprise non coordonnés! Algorithmes de recouvrement décentralisés! But : déterminer une ligne de recouvrement sans l'aide d'un graphe Des exercices théoriques généralemment difficiles à mettre en œuvre • Complexes • Coûteux • Associés à des hypothèses fortes 2 exemples 1. Juang-Venkatesan 2. Peterson-Kearns • Remarque : Graphe utilisé aussi pour le GC des points de reprise Introduction Non coordonné Coordonné Journalisation Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion 17! Point de reprise non coordonnés! Point de reprise non coordonnés! Juang-Venkatesan! Juang-Venkatesan! Méthode Comptabilisation des messages sur tous les canaux Algorithme Si (Pi défaillant) revenir au dernier état sauvegardé Sinon créer nouveau Si volatile Hypothèses Canaux fiables et FIFO Délais de transmission non connus mais bornés Mémoire locale infinie Processus à causalité événementielle (piece-wise deterministic) Répéter N-1 fois // N le nb de sites Pour tout site j ≠ i envoyer (<ROLLBACK, i, SENTij(Si)>) Répéter N-1 fois recevoir(<ROLLBACK, j, v>) Si (RCVDji(Si) > v) // il y a des messages orphelins Trouver (S'i) le plus tardif tel que RCVDji(S'i) ≤ v Si = S'i FinR FinR En local, chaque processus Pi conserve Un compteur d'état Si incrémenté à chaque sauvegarde Pour chaque voisin Pj : un compteur d'émission SENTij et un compteur de réception RCVDji Chaque sauvegarde inclut Si, ainsi que SENTij et RCVDji pour chaque canal Introduction 18! Non coordonné Coordonné Journalisation Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion 19! Point de reprise non coordonnés! Point de reprise non coordonnés! Juang-Venkatesan! Peterson-Kearns! Exemple p q <p1, 0, 0> Méthode Horloges vectorielles sur un anneau <p3, 1, 4> <p2, 0, 2> Introduction <q2, 2, 0> Non coordonné [RB, q, 4] <q2, 3, 1> Coordonné Hypothèses Canaux fiables avec délais de transmission non connus mais bornés Processus organisés en anneau (chacun connaît son successeur) load(<p3, 1, 4>) [RB, p, 1] <q1, 1, 1> 20! Journalisation Conclusion En local, chaque processus Pi maintient une horloge vectorielle Un numéro d'incarnation est incrémenté à chaque recouvrement Introduction Non coordonné Coordonné Journalisation Conclusion 21! 22! Point de reprise non coordonnés! Point de reprise non coordonnés! Peterson-Kearns! Peterson-Kearns! 497 Algorithme 13.9 Peterson–Kearns algorithm based on vector time Exemple P0 Coordonné Journalisation m4 m5 [0](5, 4, 0) [0](1, 4, 0) 1 P1 C1 (0, 0, 0) (1, 1, 0) (1, 3, 0) (1, 4, 0) (1, 2, 0) C1,1(1) m3 m1 [0](1, 3, 0) [0](1, 4, 0) [0](1, 4, 4) 1 P2 m6 C2 (0, 0, 0) (1, 3, 2) (0, 0, 1) Figure 13.17 An example of rollback recovery in the Introduction Peterson–Kearns algorithm. Conclusion 23! Points de reprise coordonnés : Problème! (1, 4, 3) (1, 4, 4) C1,0(1) rb11 W1,1(1) (1,4,0) [1](3, 0, 0) Non coordonné m2 [0](1, 0, 0) W1,0(1) rs01 [1](3, 0, 0) m0 Failure 1 (3, 0, 0) f0 (4, 4, 0) (5, 4, 0) [0](2, 0, 0) Réception de <[incarnation] (horlogei)> sur Pj Si ((Pj initiateur) && (horlogej[j] ≥ horlogei[j])) FIN Si (incarnationlocale < incarnation) incarnationlocale = incarnation Si (horlogej[j] < horlogei[j]) Sj = Sj' telle que horlogej'[j] ≥ horlogei[j] Propagation de <[incarnation] (horloge de Sj)> Sinon Propagation de <[incarnation] (horloge de Si)> Introduction (3, 0, 0) 1 C0 (0, 0, 0) (1, 0, 0) (2, 0, 0) [1](3, 0, 0) Si (P∂ défaillant) Revenir au dernier état sauvegardé S∂ Création d'un jeton <[incarnation++] (horloge de S∂)> Propagation dans l'anneau C1,2(1) rb21 (1, 4, 4) W1,2(1) Three messages Coordonné are in transit while the polling wave is executing. The Non coordonné Journalisation Conclusion message m2 from P0 to P2 with label [0](2, 0, 0) will be accepted when it arrives. Likewise, message m6 from P2 will be accepted by P1 when it arrives. However, application of rule CRB6 will result in message m5 with label [0](5, 4, 0) being discarded when it arrives at P1 . The net effect of the recovery process is that the application is rolled back to a consistent global state indicated by the dotted line, and all processes have suf24! ficient information to discard messages sent from orphan events on their arrival. Point de reprise coordonnés : Sync-and-Stop (SaS)! 13.9.4 Correctness proof Un coordinateur appelle barrière de orphaned synchronisation geler Firstune we show that all events are pour detected and l’application eliminated [28]. (arrêt des envois de message)! Theorem 13.1 The completion of a wave in casual rollback protocol insures Algorithme : ! that every event orphaned by failure fim is eliminated before the final polling 1. Le coordinateurwave. diffuse un message chkptReq à tous les processus! 2. Réception chkptReq :" that when the initiator process receives the token back, all Proof sur We p prove p stoppe l’application (plus d’envoi) et renvoie chkptReady au is, for an event the orphan events have been detected and eliminated. That coordinateur! wi!j "m#, as specified in the causal rollback protocol, 3. Lorsque le coordinateur a reçu chkptReady de tous lesmprocessus, il diffuse ¬Orphan"w "m#! fi #$ un message chkptDo et sauvegarde son état! i!j 4. Réception de chkptDo surprove p :" that the token, as constructed during the restoration of a First we failed contains necessary information to determine if any event is p sauvegarde son étatprocess, et renvoie chkptDone! orphaned by a failure. If there exists any orphan event ei! due to failure fmj , 5. Lorsque le coordinateur a reçu tous les chkptDone, il diffuse then the vector timestamp in the token will be less than the vector time of chkptCommit pour débloquer les processus! the event, i.e., tk"j! m#$ts < V "e! #. By CRB2, the vector timestamp in the 1 coordinateur synchronise les points de reprise! Coordinateur X • ckpt_req • X X • X • i Introduction Non coordonné Coordonné Journalisation Conclusion Introduction Non coordonné Coordonné i Journalisation Conclusion 25! SaS : Exemple! Algorithme non bloquant : Chandy-Lamport 85! Exécution stoppée • Algorithme “distributed snapshot” : sauvegarde cohérente de l’état global (état des processus + canaux de communication)! • Hypothèse : canaux FIFO! • Le coordinateur diffuse un marker et fait son point de reprise! • Réception du marker sur p sur le canal c:! – Si p n’a pas encore sauvegardé son état :! C (P1) chkptDo chkptReq chkptCommit chkptReady P2 • Rediffusion du marker et sauvegarde d’état! chkptDone P3 • Tout message reçu sur le canal c entre la sauvegarde et la réception du marker sur c est sauvé (message en transit)! Checkpoint Introduction Non coordonné 26! Coordonné Journalisation Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion 27! Chandy-Lamport : Exemple! marker 28! Points de reprise coordonnés non bloquants! Log messages Initiateur x Initiateur x P1 Ckpt_req Ckpt_req P2 Data message x x m m x x P3 • Problème : Coûteux en message, accès au support stable! • Chandy-Lamport modifié (MCL) ! – [Agbaria06] :réduire le nombre d’accès au support, sauvegarde uniquement après la réception de tous les markers ! Introduction Non coordonné Coordonné Journalisation Conclusion [Lai-Yang 87] Hypothèse : canaux non FIFO [Chandy-Lamport 85] Hypothèse : canaux FIFO Introduction Non coordonné Coordonné Journalisation Conclusion 29! 30! Points de reprise coordonnés à synchro. minimale! Koo & Toueg 87 par la pratique! Koo & Toueg 87! Messages estampillés – Chaque processus q conserve :! Last_rmsgq(p) - numéro du dernier message reçu de p depuis le dernier checkpoint ! First_smsgq(p) - numéro du premier message envoyé à p depuis le dernier checkpoint ! <q, 5> new [5] <t, 2> q new [10] Création d’un point de reprise PR! 1. 2. <r, 10> p r Notification aux processus dont on a reçu un message postérieur à PR-1! Test d’incohérence de chaque processus émetteur! s Incohérence ⇒ création d’un nouveau point de reprise par l’émetteur! [2] Reprise! t new Annulation des envois postérieurs aux derniers points de reprise! Introduction Non coordonné Coordonné Journalisation Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion 31! Koo & Toueg 87 : Reprise minimale Reprise : propager aux processus dont on "défait" un envoi de message Reprise de q 1. Diffusion des numéros de dernier message envoyé avant le dernier point de reprise (last_smsg q(p)) 8 9 • 10 Reprise .... Introduction Non coordonné Sauvegarde (atomique) après chaque émission [Wu & Fuchs 90] [1] 1 P1 x Coordonné [2] [1] 2 X [1] 1 P2 x • P3 Algorithme "naïf" Réception d'un message m : ckpt si m.compteur > compteur_local 2 1 x P0 x <P1, 9> <P2, 8> <P3,Ø> • P2 Coordination implicite : utilisation des messages d'applications Un compteur date les points de reprise (+1 à chaque checkpoint) Chaque message est estampillé par le compteur de l'émetteur • • P1 Point de reprise coordonnés à synchronisations implicites Algorithme de base : [Briatico 84] 2°) Reception sur p : Si last_smsgq(p) < last_rmsgp(q) Reprendre ==> Lancer l'algorithme localement P0 32! Journalisation Conclusion Introduction 2 x x Non coordonné Coordonné Journalisation Conclusion 33! 34! Points de reprise coordonnés : synchro. implicite (2) Zigzag-Path (Xu & Netzer 93) Netzer et Xu 95 • Extension des chemins de causalité de Lamport! C1 x • Un Zigzag chemin (Z-path) de Cp,i à Cq,j est une séquence de messages (m1, m2, …, ml); l ≥ 1, telle que:! – m1 est envoyé par p après Cp,i! – Si mk (1 ≤ k < l) est reçu par r, alors mk+1 est envoyé par r dans le même intervalle (ou plus tard)! x Coordonné x C3 x x C2 Propriété fondamentale : S’il existe un Z-path de C1 à C2 alors C1 et C2 ne peuvent faire partie du même ensemble cohérent de points de reprise! – ml est reçu par q avant Cq,j ! Non coordonné x m2 x mk+1 peut être envoyé après la réception de mk! Introduction x m1 Z-cycle : Il existe un Z-Path de C vers lui-même. ! !Si C appartient à un Z-cycle alors il ne peut faire partie d’une ligne de recouvrement! !C est inutile Ex : [m2, m1] forme un Z-chemin de C3 vers lui-même Journalisation Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion 35! Algo. adaptatif à base de détection de Z-Cycle! 36! Recouvrement par journalisation Point de reprise non coordonné • [Hélary 97] – sur les principes de [Briatico 84]! P0 C0,2 X C0,1 X Détection de Z-Cycle potentiel de C1,1 => Point de reprise forcé avant la réception Principe : Reconstruire l'état précédant la faute en rejouant le même scénario => Tracer tous les événements non déterministes (logging) Hypothèse d'application "piecewise deterministic" (PWD) : - Exécution ensemble d'intervalles déterministes - Chaque intervalle commence par un événement non déterministe (réception d'un message). X C1,1 P1 Introduction Non coordonné Coordonné Journalisation Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion 37! 38! Journalisation pessimiste Journalisation Pessimiste : Optimisations Implantation matérielle du support stable : Mémoire non volatile (FTM) Journalisation synchrone de tous les messages reçus ⇒ un processus repris consomme les messages du journal Détection des réémissions (estampillage) ⇒ rejet des messages retransmis par les processus repris M1 M2 M3 point de reprise Bus spécifique (TARGON-32) Sans matériel spécifique : Utiliser la mémoire vive de l'émetteur (Sender Based Message Logging [Johnson 90]) faute exécution normale P retour P m ré-exécution M1 M2 M3 Non coordonné M5 ordre recept. rejeter journal Introduction M4 Coordonné • m Traitement m <m,ordre> Journalisation Conclusion Introduction Non coordonné Reprise Coordonné Journalisation Conclusion 39! 40! Journalisation Optimiste! Journalisation Causale (Manetho, [Elnozahy 94]) Chaque processus maintient un graphe de précédences! Sauvegarde asynchrone en RAM! !(historique des événements non déterministes qui précèdent causalement l'état courant) Le journal est sauvegardé périodiquement sur support stable! Graphe contenu dans les messages (piggybacking) Graphe utilisé pour "guider" la reprise des processus! Faute => risque de perdre une partie du journal! P1 Reprise en cascade! P2 + Asynchronisme (meilleures performances)! - Possibilité d’effet domino • • • m1 m2 m5 m6 m4 m3 P3 Max. état recouvrable m7 • • m1 m2 m5 Graphe sur P1 après réception m5 m3 Introduction Non coordonné Coordonné Journalisation Conclusion Introduction Non coordonné Coordonné m4 Journalisation Conclusion 41! 42! Comparaison de stratégies (extrait de [Elnozahy 97])! Non coordonnés! Coordonnés! Journalisation optimiste! Journalisation causale! Non! Non! Non! Oui! Oui! Oui! Surcoût Comm.! Faible! Aucun! Surcoût Sauvegarde! Faible! Le plus élevé! Elevé! Elevé! Faible! Le + élevé! Faible! Faible! Faible! Faible! Nb de pts de reprise! Plusieurs! 1! 1! 1! Plusieurs! 1! GC! Complexe! Simple! Simple! Simple! Complexe! Complexe! Reprise! Hyp. PWD! Coordonnés implicites! Journalisation pessimiste! Tolérance aux fautes et large échelle! Complexe! Simple! Simple! Simple! Complexe! Complexe! Effet domino! Possible! Impossible! Impossible! Impossible! Impossible! Impossible! Extension reprise! Illimitée! Dernier checkpoint! Dernier checkpoint! Minimum! Checkpoints précédents! Dernier checkpoint! Impossible! Très lent! Très lent! Le plus rapide! Lent! Rapide! "Output commit"! Introduction Non coordonné Coordonné Journalisation La plupart des plates-formes sont peu adaptées au large échelle! Eloignement => Forte latence des protocoles ! Nombre de sites => Coût en ressources (réseau)! Dynamicité => Approche statique (stratégie figée ou guidée par l'utilisateur)! Topologie => Partitionnement! Modèle de faute restreint (crash, recovery)! Tendance à élargir vers fautes byzantines (dans P2P)! Outils : librairie BFT, pb très coûteux !! Conclusion Introduction Non coordonné Coordonné Journalisation Conclusion 43! 44! Point de reprise pour les Grilles! Bibliographie [Alvisi 93] L. Alvisi, B. Hoppe, K. Marzullo. Nonblocking and Orphan-Free Message Logging Protocols. Proc. of the 23rd International Symposium on Fault-Tolerant Computing (FTCS 23), pp. 145-154, Toulouse, France 1993. Approche hiérarchique utilisée dans ProActive (Thèse de C. Delbé)! [Agbaria06] A. Agbaria. Improvements and Reconsideration of Distributed Snapshot Protocols. In Proceedings of the 25th Symposium on Reliable Distributed Systems (SRDS'06). pp. , October 2006, Leeds, UK [Borg 89] A. Borg, W. Blau, W. Graetsch, F. Herrmann, W. Oberle. Fault Tolerance Under UNIX. ACM Transaction on Computer Systems, 7(1):1-24, février 1989. • Utilisation de groupe de recouvrement [Sistla et Welch] :! – 1 groupe par cluster! – Groupe = unité de reprise! [Fischer 85] M.J. Fischer, N.A. Lynch, M.S. Paterson. Impossibility of Distributed Consensus with One Faulty Process. Journal of the ACM 32(2):374-383, 1985. [Johnson 90] D.B. Johnson, W. Zwaenepoel, Recovery in Distributed Systems using Optimistic Message Logging and Checkpointing. Journal of Algorithms, 11(3):462-491, septembre 1990. [Elnozahy 96] E.N. Elnozahy, D.B. Johnson, Y.M. Wang. A survey of Rollback-Recovey Protocols in Message-Passing Systems. Technical Report. CMU-CS-96-181. [Koo 87] Richard Koo, Sam Toueg. Checkpoint ing and Rollback-recovery for Distributed Systems. IEEE Transactions on Software Engineering, SE-13(1):23-31, janvier 1987. • Point de reprise coordonné au sein d’un groupe! [Sens 98] P. Sens, B. Folliot. The STAR Fault Tolerant Manager. Software Practice and Experience, Aout 1998. [Wang 92] Y.M. Wang, W.F. Fuchs. Optimistic Message Logging for Independent Checkpointing in Message-Passing Systems. Proc. of the IEEE 11th Symposium on Reliable Distributed Systems, pp. 147-154, octobre 1992. • Journalisation des messages inter-groupes! [Wang 93] Y.M. Wang, W.K. Fuchs. Lazy Coordination for Bounding Rollback Propagation. Proc. of the 12th Symposium on Reliable Distributed Systems, pp.78-85, octobre 1993. [Netzer 95] R.H.B. Netzer, J. Xu. Necessary and Sufficient Conditions for Consistent Global Snapshots. IEEE Trans. on Parallel and Distributd Systems Introduction Non coordonné Coordonné Journalisation Conclusion [Hélary 98] Hélary, A. Mostefaoui, M. Raynal. Points de Contrôle cohérents dans les systèmes répartis : concepts et protocoles. TSI 17,10, 1998 45! Quelques "pointeurs" Manetho : http://www.cs.cmu.edu/People/mootaz/manetho.html Libckpt : http://www.cs.utk.edu/~plank/plank/www/libckpt.html Algorithmes : http://www.cs.utexas.edu/users/lorenzo http://www.irisa.fr/adept/index.html! http://www.dis.uniroma1.it/~baldoni/publications.shtml! MPICH-V : http://mpich-v.lri.fr