240 likes | 325 Views
Explore a protocol for fault-tolerant data coherence in grid systems, focusing on sharing data, error resilience strategies, and hierarchical cache management. This project delves into coherence models, sharing protocols, and fault tolerance strategies in distributed environments.
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