Systmes distribus : Rappel sur ordre et temps logique
Eric Cariou Master Technologies de l'Internet 1re anne Universit de Pau et des Pays de l'Adour Dpartement Informatique [Link]@[Link]
1
Temps dans un systme distribu
Dfinir un temps global cohrent et identique (ou presque) pour tous les processus
Soit synchroniser au mieux les horloges physiques locales avec une horloge de rfrence ou entre elles Soit crer un temps logique Temps qui n'est pas li un temps physique But est de pouvoir prciser l'ordonnancement de l'excution des processus et de leur communication En fonction des vnements locaux des processus, des messages envoys et reus, on cr un ordonnancement logique
Temps logique
Cration horloge logique
Chronogramme
Chronogramme
Dcrit l'ordonnancement temporel des vnements des processus et des changes de messages Chaque processus est reprsent par une ligne Trois types d'vnements signals sur une ligne
mission d'un message destination d'un autre processus Rception d'un message venant d'un autre processus vnement interne dans l'volution du processus
Les messages changs doivent respecter la topologie de liaison des processus via les canaux
Chronogramme
Trois processus tous relis entre-eux par des canaux Temps de propagation des messages quelconques et possibilit de perte de message
Chronogramme
Exemples d'vnements
Processus P1
e11 : vnement d'mission du message m1 destination du processus P2 e13 : vnement interne au processus e14 : rception du message m4 venant du processus P3
Processus P2 : message m5 envoy avant m6 mais m6 reu avant m5 Processus P3 : le message m7 est perdu par le canal de communication exy avec x le numro du processus et y le numro de l'vnement pour le processus, dans l'ordre croissant 5
Rgle de numrotation d'un vnement
Dpendance causale
Relation de dpendance causale
Il y a une dpendance causale entre 2 vnements si un vnement doit avoir lieu avant l'autre Notation : e e'
e doit se drouler avant e'
Si e e', alors une des trois conditions suivantes doit tre vrifie pour e et e'
Si e et e' sont des vnements d'un mme processus, e prcde localement e' Si e est l'mission d'un message, e' est la rception de ce message Il existe un vnement f tel que e f et f e'
Ordonnancement des vnements
Les dpendances causales dfinissent des ordres 6 partiels pour des ensembles d'vnements du systme
Dpendance causale
Sur exemple prcdent
Quelques dpendances causales autour de e12
Localement : e11 e12, e12 e13 Sur message : e12 e34 Par transitivit : e12 e35 (car e34 e35) et e11 e13 A priori non : absence de dpendance causale Des vnements non lis causalement se droulent en parallle
Dpendance causale entre e12 et e32 ?
Relation de paralllisme : ||
e || e' ((e e') v (e' e))
Paralllisme logique : ne signifie pas que les 2 vnements se droulent simultanment mais qu'il peuvent se drouler 7 dans n'importe quel ordre
Horloges logiques
Horloges logiques
Datation de chacun des vnements du systme Avec respect des dpendances causales entre evts Estampille (horloge de Lamport)
3 familles d'horloge
Une donne par vnement : information au niveau global Un vecteur par vnement : information sur chacun des autres processus Une matrice par vnement : information sur les informations que connaisse chacun des processus des autres processus
Vectorielle (horloge de Mattern)
Matricielle
Horloge de Lamport
Lamport, 1978
Une date (estampille) est associe chaque venement : couple (s, nb)
s : numro du processus nb : numro d'vnement e e' H(e) < H(e')
Respect dpendance causale
Avec H(s, nb) < H(s' , nb') si (nb < nb') ou (nb = nb' et s < s') H(e) < H(e') (e' e) C'est--dire : soit e e', soit e || e'
Mais pas la rciproque :
Invariant sur les dates
Pour deux dates d'un mme processus, les numros de ces dates sont diffrentes d,d' : d.s = d'.s [Link] d'.nb
Il n'y pas deux vnements locaux ayant le mme numro
Cration du temps logique
Horloge de Lamport
Localement, chaque processus Pi possde une horloge locale logique Hi, initialise 0
Sert dater les vnements Hi = Hi + 1 : on incrmente l'horloge locale L'vnement est dat localement par Hi On incrmente Hi de 1 puis on envoie le message avec (i, Hi) comme estampille Hi = max(Hi, nb) +1 et marque l'vnement de rception avec Hi
Pour chaque vnement local de Pi
mission d'un message par Pi
Rception d'un message m avec estampille (s, nb)
Hi est ventuellement recale sur l'horloge de l'autre processus 10 avant d'tre incrmente
Horloge de Lamport
Exemple : chronogramme avec ajouts des estampilles
Date de e23 : 6 car le message m5 reu avait une valeur de 5 et l'horloge locale est seulement 3 Date de e34 : 4 car on incrmente l'horloge locale vu que sa valeur est suprieure celle du message m3 Pour e11, e12, e13 ... : incrmentation de +1 de l'horloge locale 11
Ordonnancement global
Horloge de Lamport
Via Hi, on ordonne tous les vnements du systme entre eux Ordre total obtenu est arbitraire Si dpendance causale entre 2 evts : ordre respecte dpendance Si indpendance causale entre : choix d'un ordre entre les 2
Pas de problme en pratique puisqu'ils sont indpendants
Ordre total, not e << e' : e s'est droul avant e'
Soit e vnement de Pi et e' vnement de Pj : e << e' (Hi(e) < Hj(e')) v (Hi(e) = Hj(e') avec i < j)
Localement (si i = j), Hi donne l'ordre des vnements du processus Les 2 horloges de 2 processus diffrents permettent de dterminer l'ordonnancement des vnements des 2 processus
Si galit de la valeur de l'horloge, le numro du processus est utilis pour les ordonner
Ordre total global obtenu pour l'exemple
e11 << e31 << e12<< e21 << e32 << e13 << e22 << e33 << e14 << e34 << 12 e35 << e23 << e24 << e15
Horloge de Mattern
Horloge de Mattern & Fidge, 1989-91
Horloge qui assure la rciproque de la dpendance causale
H(e) < H(e') e e'
Permet galement de savoir si 2 vnements sont parallles (non dpendants causalement) Ne dfinit par contre pas un ordre total global Utilisation de vecteur V de taille gale au nombre de processus
Principe
Localement, chaque processus Pi a un vecteur Vi Un message est envoy avec un vecteur de date
Pour chaque processus Pi, chaque case Vi[ j ] du vecteur contiendra des valeurs de l'horloge du processus Pj13
Horloge de Mattern
Fonctionnement de l'horloge
Initialisation : pour chaque processus Pi, Vi =(0, ... , 0) Pour un processus Pi, chacun de ses vnements (local, mission, rception) :
Vi [ i ] = Vi [ i ] + 1 Incrmentation du compteur local d'vnement Si mission d'un message, alors Vi est envoy avec le message Pour un processus Pi, la rception d'un message m contenant un vecteur Vm, on met jour les cases j i de son vecteur local Vi
j : Vi [ j ] = max ( Vm [ j ], Vi [ j ])
Mmorise le nombre d'vnements sur Pj qui sont sur Pj dpendants causalement par rapport l'mission du message La rception du message est donc aussi dpendante causalement de ces vnements sur Pj
14
Horloge de Mattern
Exemple : chronogramme d'application horloge de mattern
Mme exemple que pour horloge de Lamport
15
Horloge de Mattern
Relation d'ordre partiel sur les dates
V V' dfini par i : V[ i ] V'[ i ] V < V' dfini par V V' et j tel que V [ j ] < V' [ j ] V || V' dfini par ( V < V' ) ( V' < V )
Horloge de Mattern assure les proprits suivantes, avec e et e' deux vnements et V(e) et V(e') leurs datations
Dpendance et indpendance causales
V(e) < V(e') e e'
Si deux dates sont ordonnes, on a forcment dpendance causale entre les vnements dats Si il n'y a aucun ordre entre les 2 dates, les 2 vnements sont indpendants causalement 16
V(e) || V(e') e || e'
Horloge de Mattern
Retour sur l'exemple
V(e13) = (3,0,0), V(e14) = (4,0,3), V(e15) = (5,4,5)
V(e13) < V(e14) donc e13 e14 V(e14) < V(e15) donc e13 e15 V(e35) < v(e23) donc e35 e23
V(e35) = (2,0,5) et V(e23) = (2,3,5)
L'horloge de Mattern respecte les dpendances causales des vnements
Horloge de Lamport respecte cela galement On a ni V(e32) < V(e13) ni V(e13) < V(e32) donc e32 || e13 L'horloge de Mattern respecte les indpendances causales
V(e32) = (0,0,2) et V(e13) = (3, 0, 0)
L'horloge de Lamport impose un ordre arbitraire entre les vnments indpendants causalement 17
Horloge matricielle
Horloge matricielle
n processus : matrice M de (n x n) pour dater chaque evt Sur processus Pi
Ligne i : informations sur vnements de Pi
Mi [ i , i ] : nombre d'vnements raliss par Pi Mi [ i , j ] : nombre de messages envoys par Pi Pj (avec j i) Mi [ j , k ] : nombre de messages que l'on sait que Pj a envoy Pk Mi [ j , j ] : nombre d'vnements que l'on connait sur Pj (avec j k)
Ligne j (avec j i)
Un processus Pi a une connaissance sur le nombre de messages qu'un processus Pj a envoy Pk
Quand on reoit un message d'un autre processus, on compare l'horloge d'mission avec l'horloge locale
Peut dterminer si on ne devait pas recevoir un message avant 18
Horloges
Informations donnes par les horloges
Estampille : connaissance global du nombre d'vnements du systme Vectorielle: connaissance d'vnements sur chacun des autres processus Matricielles : connaissance de la connaissance d'vnments qu'un processus connait sur les autres Estampille : ordonnancement global, gestion priorit Vectorielle : validation de la cohrence d'un tat global, proprits sur de la diffusion Matricielle : assurer la dlivrance causale de messages entre plusieurs processus 19
Application, utilit
Cf TD systmes distribus L3 Informatique
tat global
tat Global
tat du systme un instant donn Buts de la recherche d'tats globaux
Trouver des tats cohrents partir desquels on peut reprendre un calcul distribu en cas de plantage du systme Dtection de proprits stables, du respect d'invariants Faciliter le debugging et la mise au point d'applications distribues
Dfini partir de coupures Photographie un instant donn de l'tat du systme Dfinit les vnements appartenant au pass et au futur par rapport l'instant de la coupure 20
Coupure
Coupure
Dfinition coupure
Calcul distribu = ensemble E d'vnements Coupure C est un sous-ensemble fini de E tel que
Soit a et b deux vnements du mme processus : a C et b a b C
Si un vnement d'un processus appartient la coupure, alors tous les vnements locaux le prcdant y appartiennent galement
Etat associ une coupure
Si le systme est compos de N processus, l'tat associ une coupure est dfini au niveau d'un ensemble de N vnements (e1, e2, ... ei, ... eN), avec ei vnement du processus Pi tel que
i :e C et e vnement du processus Pi e ei L'tat est dfini la frontire de la coupure : l'vnement le 21 plus rcent pour chaque processus
Coupure
Exemple de coupure
(mme chronogramme que pour exemples horloges Lamport et Mattern)
Coupure = ensemble { e11, e12, e13, e21, e22, e23, e31, e32, e33, e34 }
tat dfini par la coupure = (e13, e23, e34)
22
Coupure/tat cohrent
Coupure cohrente
Coupure qui respecte les dpendances causales des vnements du systme
Et pas seulement les dpendances causales locales chaque processus Soit a et b deux vnements du systme : a C et b a b C Coupure cohrente : aucun message ne vient du futur
tat cohrent
tat associ une coupure cohrente Permet par exemple une reprise sur faute
23
Coupure cohrente
Exemple (mme chronogramme que prcdent)
Coupure C1 : cohrente Coupure C2 : non cohrente car e35 e23 mais e35 C2
La rception de m5 est dans la coupure mais pas son mission 24 m5 vient du futur par rapport la coupure
Datation Coupure
Horloge de Mattern permet de dater la coupure
Soit N processus, C la coupure, ei l'vnement le plus rcent pour le processus Pi, V(ei) la datation de ei et V(C) la datation de la coupure
V(C) = max ( V(e1), ... , V(eN) ) : i : V(C)[ i ] = max ( V(e1)[ i ] , ... , V(eN)[ i ] )
Pour chaque valeur du vecteur, on prend le maximum des valeurs de tous les vecteurs des N vnements pour le mme indice
Permet galement de dterminer si la coupure est cohrente
Cohrent si V(C) = ( V(e1)[ 1 ], ... , V(ei)[ i ], ... , V(eN) [ N ] )
Pour un processus Pi, si l'vnement ei est le plus rcent c'est lui qui a la date la plus rcente pour C : sinon un vnement ej d'un processus Pj (i j) s'est droul aprs un vnement ei' de Pi avec ei' plus rcent que ei
ei ei' et ei' ej avec ei C, ej C et ei' C
25
Datation Coupure
Datation des coupures de l'exemple
Coupure C1 : tat = (e13, e22, e33)
V(e13) = (3,0,0), V(e22) = (1,2,1), V(e33) = (0,0,3) V(C) = (max(3,1,0), max(0,2,0), max(0,1,3)) = (3,2,3) Coupure cohrente car V(C)[1] = V(e13)[1], V(C)[2] = V(e22)[2], V(C)[3] = V(e33)[3] V(e13) = (3,0,0), V(e23) = (2,3,5), V(e34) = (2,0,4) V(C) = (max(3,2,2), max(0,3,0), max (0,5,4)) Non cohrent car V(C)[3] V(e34)[3]
Coupure C2 : tat = (e13, e23, e34)
D'aprs la date de e23, e23 doit se drouler aprs 5 vnements de P3 or e34 n'est que le quatrime vnement de P3 Un vnement de P3 dont e23 dpend causalement n'est donc pas dans la coupure (il s'agit de e35 se droulant dans le futur) 26