240 likes | 324 Views
Jean-Francois Deverge Encadrants : Gabriel Antoniu, Luc Bougé Réunion GDS IRISA – Projet PARIS DEA Informatique - 05/2004. Un protocole de cohérence des données tolérant aux fautes. Plan. Introduction Quel modèle de cohérence pour les données ? Un protocole pour le partage des données
E N D
Jean-Francois Deverge Encadrants : Gabriel Antoniu, Luc Bougé Réunion GDS IRISA – Projet PARIS DEA Informatique - 05/2004 Un protocole de cohérence des données tolérant aux fautes
Plan • Introduction • Quel modèle de cohérence pour les données ? • Un protocole pour le partage des données • Le support de la tolérance aux fautes
Partage de données pour la grille • Fédération de grappes • Hétérogène • Hiérarchique • Approche classique • Partage explicite • GridFTP, IBP, etc
La plate-forme JuxMem • Service de partage de données pour la grille • Données modifiables • Environnement dynamique • Plate-forme d’expérimentations • Protocoles de cohérence • Stratégies de tolérance aux fautes juxmem Groupe g Groupe grappe C Groupe grappe A Groupe grappe B Architecture logique Architecture physique http://www.irisa.fr/paris/Juxmem
Le modèle choisi :la cohérence d’entrée • Accès ordinaires (read/write) • Accès spéciaux synchronisés • acquire : accès exclusif • acquireR : accès en lecture • release : libération du verrou • Association explicite d'un verrou avec une ou plusieurs variables partagées • Granularité de partage = ensemble des données protégées par le verrou • Plusieurs lecteurs concurrents • MRSW : Multiple Reader Single Writer
Exemple (1/2) • var A, B shared(L) • B = 3 • acquireR(L) • c = A; • d = B; • acquireR(L) • e = A; • f = B; • acquire(L) • A = 12; • B = 99; • release(L)
Exemple (2/2) • var A, B shared(L) • B = 3 • acquireR(L) • c = A; • d = B; • acquireR(L) • e = A; • f = B; • acquire(L) • A = 12; • B = 99; • release(L) c = e = A = 12; d = f = B = 99;
API visée • interface JuxMemService • ID alloc( size, attrib ) • ECMemory map( ID ) • interface ECMemory • void read(buffer, offset, length) • void write(buffer, offset, length) • void acquire() • void acquireR() • void release() • void flush()
Quel protocole pour la gestion de ces données ? • Une copie de référence (« home ») persistante [HBRC] • Utilisation d’un group membership pour réaliser la réplication du home • Gestion des accès à la donnée (obtention du verrou) Home access req_acquire req_update req_release req_acquire
Ou placer ces données ? • Persistance : • Dissémination statistique [PAST] • Répartition sur plusieurs grappes • Efficacité : • Copies primaires choisies dans une partie rapide du réseau [OceanStore] • Copies choisies dans des grappes proches • Communication inter-grappes pour toutes requêtes req_acquire
Un début de solution :Les caches hiérarchiques • Utilisation d'un cache de données au niveau de chaque grappe [CLRC] • Plusieurs politiques de cohérence des caches • Communication inter-grappes pour les requêtes d’acquisition du verrou et les mises a jour home req_read * req_acquire
Un deuxième pas :Les verrous hiérarchiques [H2BRC] GDG Home Home global req_acquire req_read req_write req_release req_acquire req_read req_write req_release Home local Home local C B A C A B
Idee : superposer les caches et verrous hierarchiques • Gestion des accès aux nœuds locaux • Possibilité de relâchement de la cohérence en repoussant l'application des mises à jour sur le home global • Mécanisme d'allocation du home local GDG Home global req_acquire req_read req_release allocate_home Home local
Persistance des home locaux • Réplication des home locaux par l’utilisation de group membership • LDG : Local Data Group • Home global • GDG : Global Data Group • Multiplication des copies dans le système GDG req_acquire req_read req_release allocate_ldg LDG LDG
Assimilation des LDG en membres du GDG • Diminution du nombre de copies • Amélioration de la persistance du GDG
Le support de la tolérance aux fautes • Fautes au niveau • GDG • LDG • Client • Utilisation d'un group membership proactif • Coût GDG LDG LDG LDG
L'objet version • Associe a chaque verrou • (X, Y, Z) = • X : un compteur de fautes de LDG • Y : compteur de fautes de client • Z : Un compteur de mises à jour • Un historique des versions valides
Prochaines étapes • Terminer l’implémentation • Évaluation expérimentale sur plusieurs grappes • Autres modèles et protocoles : • Protocoles par invalidation • Modèles de cohérence stricte ou séquentielle • Modèle de cohérence de portée (MRMW) • Multi-modèles (couches LDG différentes)
--- Copie [] [C; A] [C; A] data lock_access data req_acquire req_write req_acquire req_read A req_read C B Fig 3 :B lit la donnee et C met a jour la donnee Fig 2 :C obtient une donnee coherente Fig 1 :A et C demandent l'acces exclusif [A] [A] lock_access data req_read req_release Fig 4 :C relache le verrou et A obtient l'acces exclusif Fig 5 : A lit une donnee coherente req_acquire