Modèle à objets dupliqués

publicité
Modèle à objets dupliqués
Daniel Hagimont
IRIT/ENSEEIHT
2 rue Charles Camichel - BP 7122
31071 TOULOUSE CEDEX 7
[email protected]
http://hagimont.perso.enseeiht.fr
1
Plan




Exemples de partage par duplication
Principe général
Gestion de la cohérence
Exemple d'implantation
2
Exemples

Origine : extension aux systèmes répartis des
méthodes de partage
 partage de la mémoire commune dans un SMP
 partage d’un système de fichiers (NFS)
 extension du partage de mémoire virtuelle dans Unix
3
Exemples

Partage de la mémoire commune dans un SMP
 cache associé à chaque processeur
 Mise à jour immédiate (write through) ou retardée (write
back)
processeur
processeur
cache
cache
mémoire
commune
4
Exemples

Partage d’un système de fichier (NFS)
 cache NFS sur les sites clients
 invalidations périodiques
partition
montée
partition
exportée
5
Exemples

Partage de mémoire virtuelle (Unix)
 partage de segments (suite de pages)
 partage de la mémoire centrale par couplage
processus
Unix
segment
mémoire
centrale
6
Exemples

Partage de mémoire virtuelle en réparti
7
Principe général





Principe : fournir des objets partagés par
couplage dans les espaces d’adressage de
structures d’exécution (couplage virtuel)
réparties
Partage par copie locale (efficacité)
Programmation simple (accès local)
Le système charge éventuellement les données à
la demande
Le système assure la cohérence des données
partagées
8
Implantations principales




Mémoire Virtuelle Partagée Répartie
• Distributed Shared Memory
Niveau
 Matériel (multiprocesseurs, FireFly)
matériel spécifique 
 Mécanismes de pagination (Ivy)
indépendance 
 Librairies utilisateurs (Orca)
impose une structure 
Unité de partage
 Octet (Ivy)
 Objets (méthodes/synchro, Orca)
Cohérence
 Mise de cache (réplication)
 Propagation de mises à jour
 Différents degrés de cohérence acceptables en fonction des
applications (exemple indicateurs sur la charge des machines)
9
Gestion de la cohérence

Un exemple
 (initialement, a = b = 0)
Processus 1
Processus 2
if (a >= b)
a = a + 1;
b = b + 1;
print("OK");
 Intuitivement, Processus 1 devrait toujours afficher OK
…
10
Gestion de la cohérence

Et ensuite …
Processus 1 et 2
Processus 3
Processus 4
if (a > b) print("1 0");
if (b > a) print("0 1");
a = a + 1;
b = b + 1;
 Processus 1 et 2 ne devraient pas afficher des résultats différen
11
Implantations principales

Propagation des mises à jour
 Write-update
•
•
•
•
Lectures locales sans communication
Modifications : locales et envoyées en multicast
Cohérence : propriétés sur l'ordre des messages
Multicast peut être cher
 Write-invalidate
• Généralement, n lecteurs – 1 écrivain
• Invalidations si accès conflictuels
• Plusieurs lectures/écritures locales sans communication (si
en cache)
12
Gestion de la cohérence



Cohérence : relation que gardent entre elles les
différentes copies des données
Cohérence stricte, cohérence séquentielle
Cohérences faibles
 cohérence faible (weak consistency)
 cohérence à la sortie (release consistency)
 cohérence à l'entrée (entry consistency)

Cohérences non-séquentielles
 cohérence causale
 cohérence FIFO
 cohérence à terme
13
Cohérence stricte

Cohérence stricte : toute lecture sur un élément X
renvoie une valeur correspondant à l'écriture la
plus récente sur X
 Modèle idéal
 Impossible à mettre en œuvre
• Synchronisation des horloges (impossible d'avoir un
référentiel de temps absolu)
• Temps de communication (une opération locale lancée après
une opération distante peut se terminer avant)

On essaie de s'approcher de ce modèle de
cohérence, mais avec des modèles moins
contraignants
14
Cohérence séquentielle

Le résultat de l'exécution est identique à celui d'une exécution où
 Toutes les opérations sont exécutées selon une certaine séquence
S (comme en centralisé)
 Les opérations exécutées par tout processus P figurent dans S
dans le même ordre que dans P
 La cohérence interne des données est respectée dans S (après une
écriture et jusqu'à la prochaine, la lecture délivre la valeur écrite)
 Remarque : on ne contraint pas l'ordre des opérations dans des
processus différents
P1
P2
P3
W(y)4
W(x)1
W(y)2
R(y)2
R(x)0
R(x)1
W2(y)2 R3(y)2 R3(x)0 W1(x)1 R3(x)1 W1(y)4
respecte l'ordre séquentiel
15
Exemples
Cohérence stricte
P1
P2
P3
W(x)a
W(x)b
R(x)a
R(x)a
P4
Cohérence séquentielle,
non stricte
P1
P2
P3
R(x)b
W(x)a
W(x)b
R(x)a
Cohérence non
séquentielle
P4
R(x)b
R(x)a R(x)b
P4
P1
P2
P3
R(x)b
W(x)a
W(x)b
R(x)b
R(x)a
R(x)a
R(x)b
16
Cohérence séquentielle

Les processeurs doivent s'accorder sur l'ordre des
accès
 un accès en écriture est terminé si une lecture à la même
adresse rend la valeur écrite (quelque soit le processeur)
 chaque écriture doit être terminée pour continuer l'exécution
(sinon 2 écritures peuvent s'inverser)

Dans la pratique, algorithme d'ordonnancement
global
 diffusion des modifications à tous les sites (ordre total)
 ou un serveur n'autorisant qu'une seul copie en écriture (par
unité)
 lourd et inefficace
17
Cohérence séquentielle

Inutile si synchronisation
 a une variable de synchronisation (avec P et V)
 pas nécessaire d'imposer des contraintes sur les
opérations internes à une section critique
P(a)
W(x)v
W(y)v
W(z)v
V(a)
P1
P2
18
Cohérences faibles


Imposent des contraintes de programmation pour
fournir la cohérence séquentielle : synchronisation
La cohérence faible (weak consistency)
 cohérence séquentielle sur les verrous
 les accès mémoires doivent être terminés avant chaque
point de synchronisation
P(a)
R(x)1
W(y)2 W(z)3
V(a)
P1
ack(a)
P2
19
Cohérences faibles

La cohérence à la sortie (release consistency)
 on différencie les points d'entrée et de sortie
 en sortie de synchronisation, les accès doivent être
terminés
 mise à jour précoce (eager): envoi des modifications à
tous les nœuds ayant une copie
 mise à jour paresseuse (lazy) : acquisition par le
processeur qui reprend le verrou (sorte de cohérence à
l'entrée)
 utilisation possible de diffs sur des pages
 TreadMarks (Rice)
20
Cohérences faibles

La cohérence à l'entrée (entry consistency)
 association explicite entre variable de synchronisation
et variables partagées
 lorsqu'on utilise un objet, on le vérrouille
 on met en cohérence l'objet lors de la prise du verrou
 Midway (CMU)
21
Cohérences non séquentielles

Cohérence causale
 Ne considère que des événements reliés par une
relation de causalité
 Pas un séquence unique

OP1 précède OP2 causalement si
 OP1 précède OP2 sur le même processeur
 OP2 est une lecture de la valeur écrite par OP1


OP1 et OP2 sont concurrentes si pas de
précédence causale transitive
Cohérence causale : deux écritures concurrentes
peuvent être vues dans des ordres différents sur
des processeurs différents
22
Cohérences non séquentielles

Cohérence causale
 complexe à mettre en œuvre (trace des dépendances,
horloges vectorielles)
 gains significatifs (60-90%) pour certaines applications
P1
P2
P3
P4
W(x)3
W(x)1
R(x)1
W(x)2
//
R(x)1
R(x)3
R(x)2
R(x)1
R(x)2
R(x)3
"pas vu, pas pris !"
23
Cohérences non séquentielles

Cohérence FIFO
 On ne considère la causalité qu'à l'intérieur d'un seul
processus
 2 écritures par un même processus doivent être vues
par tous les processus dans le même ordre
P1
P2
P3
P4
W(x)1
R(x)1
W(x)2
W(x)3
R(x)2 R(x)1 R(x)3
R(x)1 R(x)2 R(x)3
24
Cohérences non séquentielles

Cohérence à terme (eventual consistency)
Majorité de lectures, peu d'écritures
Acceptable de lire une donnée non à jour
Exemples : DNS, WWW ...
En l'absence prolongée de modifications, les copies
finiront pas devenir cohérentes
 Algorithmes dits "épidémiques"




25
Conclusion

Conclusion
 intérêts du modèle à objets dupliqués
• favorise les accès locaux (efficacité)
• omniprésent

Limites et perspectives
 de nombreux protocoles de cohérence
• complexité
• pas de protocole universel
 protocoles adaptés aux besoins spécifiques de
applications
• gestion du partage en mode déconnecté
26
Téléchargement