Simulation répartie - Philippe Queinnec

Transcription

Simulation répartie - Philippe Queinnec
Simulation à événements
Simulation et temps réel
Systèmes et algorithmes répartis
Simulation répartie
Gérard Padiou, Philippe Quéinnec
Département Informatique et Mathématiques Appliquées
ENSEEIHT
7 octobre 2015
Systèmes et algorithmes répartis – IX
1 / 40
Simulation à événements
Simulation et temps réel
plan
1
Simulation à événements
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
2
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Systèmes et algorithmes répartis – IX
2 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Plan
1
Simulation à événements
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
2
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Systèmes et algorithmes répartis – IX
3 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Simulation
Simulation à événement discret (DES)
Simulation basée sur des événements
Exécution au plus vite
Analyse de systèmes, du futur
Domaine : réseaux, système de transport, système de
fabrication
Simulation d’environnement virtuel
Environnement interactif
Simulation temps réel
Domaine : apprentissage, jeux
Systèmes et algorithmes répartis – IX
4 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Simulation répartie
Objectif : Simulation exploitant des architectures réparties
Plusieurs simulateurs peuvent communiquer, coopérer
Exploiter le parallélisme offert par l’architecture
Difficulté : coût des communications et synchronisation des
simulateurs
Systèmes et algorithmes répartis – IX
5 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Quel heure est-il ?
Trois référentiels temporels
Temps physique : temps dans le système physique que l’on
simule
Temps de la simulation : représentation du temps physique
dans la simulation (offset par rapport au début de la
simulation)
Temps externe (wallclock time) : temps au cours duquel a lieu
l’exécution de la simulation
Avancement du temps
Temps externe : autonome
Temps de la simulation : par le(s) simulateur(s).
Identique au temps externe (jeu), proportionnel au temps
externe, ou le plus vite possible.
Temps physique : par correspondance avec la simulation
Systèmes et algorithmes répartis – IX
6 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Hypothèses générales
Simulation à événements : chaque événement est daté dans
un temps global propre à la simulation (⇒ horloge)
Ordre total sur les événements (simultanéité possible)
Variables d’états globales des entités simulées
Principes proches d’un calcul diffusant :
Étape initiale produisant un ou plusieurs événements
Chaque événement entraı̂ne un traitement
Chaque traitement peut engendrer de nouveaux événements
Tout nouvel événement est futur
Terminaison : l’horloge de la simulation avance jusqu’à :
soit plus d’événement à traiter
soit au bout d’une durée fixée
Systèmes et algorithmes répartis – IX
7 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Un exemple : simulation de trafic aérien
Exemple
Variables d’état : les vols
Traitements :
Planification périodique des vols (toutes les x minutes)
Envol et Atterrissage
Événements significatifs :
Date de planification
Décollage
Atterrissage
Événement datés dans un temps global
Terminaison : Simulation d’une journée de trafic
Systèmes et algorithmes répartis – IX
8 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Algorithme centralisé
Structures de données
Les variables d’états
Une file ordonnée des événements à traiter E = he1 , e2 , . . .i
Ordre total des événements ≡ Datation
∀ei , ej ∈ E : d(ei ) ≤ d(ej ) ∨ d(ej ) ≤ d(ei )
La date courante ≡ date du dernier événement traité
Prochain événement à traiter ≡ tête de la file E
∆
step(e) = traitement de e + événements engendrés
Hypothèse
Une étape ne produit que des événements futurs
∀e ∈ E : ∀e 0 ∈ step(e) = {e1 , . . . , ep } :: d(e) < d(e 0 )
Mais : ∀e, e 0 ∈ E d(e) < d(e 0 ) 6⇒ step(e) before step(e 0 )
Systèmes et algorithmes répartis – IX
9 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Algorithme centralisé
// Étapes de traitement
Set<Event> initial step() {... }
Set<Event> step(Event e) {... }
process Simulation { // Processus de simulation
Date debut = new Date();
Date hc = debut;
Date fin = new Date(debut.getTime()+durée);
// triée par date
SortedSet<Event> EVL = initial step();
while (!EVL.isEmpty()) {
Event next = EVL.first();
hc = next.getDate();
if (hc.after(fin)) exit;
EVL.addAll(step(next));
EVL.remove(next);
}
// Enregistrer les résultats
}
Systèmes et algorithmes répartis – IX
10 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Répartition d’une simulation
Coopération de plusieurs simulateurs
Deux contextes possibles :
par partitionnement des traitements : tous participent aux
mêmes tâches mais interagissent
⇒ Plusieurs simulateurs : chacun simule un aéroport
par complémentarité : simulations dédiées qui se complètent
⇒ Un simulateur de trafic et un simulateur météo
Cohérence globale de la simulation
Chaque simulateur a une date courante
Comment assurer une synchronisation des simulateurs ?
Systèmes et algorithmes répartis – IX
11 / 40
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Simulation à événements
Simulation et temps réel
Le problème de la synchronisation des simulateurs
Une tentative : un état possible . . .
Exemple
1
15
1 5
2
10
5
3
6
5
17
8
14
12
18
sim1
3
15
6
15
3 12
6
10
?
sim2
14
10
18
17
17
2
2
?
8
sim3
(hypothèse : chaque simulation d’aéroport commence par un envol)
Systèmes et algorithmes répartis – IX
12 / 40
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Simulation à événements
Simulation et temps réel
Le problème de la synchronisation des simulateurs
Point de vue temporel
Sim1
1
5
Sim2
Sim3
3
2
6 9
15
10
12
8
14
17
18
Le simulateur 1 peut avancer de 1 à 6 dès qu’il connaı̂t les
événements d’arrivée issus des simulateurs 2 et 3
Sim2 ne connaı̂t pas le prochain événement issu de Sim3
Sim3 ne connaı̂t pas le prochain événement issu de Sim2
Systèmes et algorithmes répartis – IX
13 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Critère de synchronisation
Contrainte locale
Sur chaque simulateur, les événements doivent être traités par
ordre croissant de leur estampille temporelle
Cette propriété suffit à ce que la simulation distribuée soit
équivalente à une simulation centralisée
Principes
Chaque simulateur a son horloge (sa date) courante
Chaque simulateur doit savoir où en sont les autres
Éviter les oublis, les retours en arrière
Éviter l’interblocage
Deux approches
Pessimiste : garantir le respect de la contrainte, attendre qu’il
soit sûr d’avancer
Optimiste : laisser faire et revenir en arrière si nécessaire
Systèmes et algorithmes répartis – IX
14 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Approche pessimiste
Critère d’avancement
Soit un simulateur s avec une suite ordonnée d’événements non
traités locaux ou issus des autres simulateurs :
E s = he1 , e2 , e3 , . . .i avec d(e1 ) ≤ d(e2 ) ≤ d(e3 ), . . .
On note sim(ei ) le numéro du simulateur origine de l’événement ei .
L’horloge locale du simulateur s peut être incrémentée pour traiter
l’événement de tête e1 de la liste E s ssi :
∀s 0 ∈ S : ∃ei ∈ E s : sim(ei ) = s 0
≡ ∃ dans E s un événement issu de chaque simulateur participant
Systèmes et algorithmes répartis – IX
15 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Hypothèse
Hypothèse
configuration statique, pas de création dynamique de
simulateur
réseau fiable, FIFO
⇒ l’estampille du dernier message reçu depuis un simulateur est
une borne inférieure (LBTS lower bound on time stamp) des
messages ultérieurement reçus depuis ce même simulateur
Systèmes et algorithmes répartis – IX
16 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Le risque d’interblocage
Exemple
1
13
2
10
3
6
17
23
8
14
18
22
1
1
sim1
17
?
13
3
18
?
10
10
2
2
Systèmes et algorithmes répartis – IX
3
13
sim3
?
sim2
6
6
8
17 / 40
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Simulation à événements
Simulation et temps réel
Le risque d’interblocage
L’idée d’anticipation (lookahead)
Exemple
Les simulateurs sim2 et sim3 s’échangent jusqu’à quand ils ne
produiront pas de nouvel événement → débloque sim3
1
13
1 5
2
10
5
3
6
5
17
8
14
12
15
sim1
6
12
8
2
14
8
8
10
17
2
Systèmes et algorithmes répartis – IX
13
3
6
10
sim2
12
3
13
14
17
12
15
12 15
8
sim3
18 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Principe d’un algorithme réparti
Usage de files ordonnées d’événements issus de chaque simulateur
Process Simulation[s : 1..N] {
// Files ordonnées d’évts issus de chaque simulateur
SortedSet<Event> E[1..N] = new SortedSet<Event>[N];
for (int i=1; i<=N; i++) E[i] = new SortedSet<Event>();
E[s].addAll(initial step());
while (true) {
int ss = attendre critere(E); // choix de la file
Event next = E[ss].first(); hc = next.getDate();
if (hc.after(fin)) exit;
for (Event e : step(next)) // événements futurs
if (sim(e)==s) E[s].add(e) else send(e,sim(e));
E[ss].remove(next);
} // while
}
Systèmes et algorithmes répartis – IX
19 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Principe d’un algorithme réparti (suite)
// renvoie le no de la file du prochain évt à traiter
int attendre critere(SortedSet<Event>[] E) {
boolean vide = true; // au moins l’un des E[s] est-il vide ?
while (vide) { // risque de boucle infinie → deadlock
vide = false;
for (int s=1; s <= N; s++)
vide = vide || E[s].isEmpty();
}
Date min = E[N].getDate();
int smin = N;
for (int s=1; s < N; s++)) {
if (E[s].first().getDate().before(min)) {
smin = s;
min = E[s].first().getDate();
}
}
return smin;
}
Systèmes et algorithmes répartis – IX
20 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Algorithme évitant l’interblocage (Chandy-Misra-Bryant)
Introduction de messages vides
Lookahead (anticipation) : durée du prochain intervalle sans
événement local nouveau
Utilisation de messages vides datés par :
date courante + lookahead
Deux possibilités de propagation
Par diffusion de messages vides datés après chaque traitement
Sur demande explicite d’un simulateur ayant une file vide
Systèmes et algorithmes répartis – IX
21 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Évitement de l’interblocage par message nul
loop {
int ss = attendre critere(E);
Event next = E[ss].first();
for (Event e : step(next)) // événements futurs
if (sim(e)==s) E[s].add(e) else send(e,sim(e));
E[ss].remove(next);
for (int s=1; s <= N; s++) {
int lookahead = borne inf du prochain evt local;
int h = current time + lookahead;
send(null(h), s);
}
}
Systèmes et algorithmes répartis – IX
22 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Limitations de l’algorithme
Résolution de l’interblocage par message vide
Estimation du lookahead ? (délai minimal entre 2 sites)
Possibilité de chaı̂nes de messages vides
sim1
9 en attente
8 message vide
5 horloge du site
lookahead = 1
9
(en attente
de sim2)
7
10
8
20
15
sim2
(en attente
de sim3)
6 9
sim3
(en attente
de sim1)
5
13 12
Systèmes et algorithmes répartis – IX
23 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Amélioration 1 : correction de l’interblocage
Observation
Si tous les simulateurs sont bloqués (interblocage), ils peuvent
immédiatement avancer à la date du plus proche événement du
système.
sim1
9 en attente
5 horloge du site
9
(en attente
de sim2)
Solution
1 Détection de
l’interblocage
3
20
15
sim2
sim3
(en attente
de sim3)
6
(en attente
de sim1)
13 12
2
Calcul du min (une
vague)
3
Diffusion du min
5
Tous peuvent passer à 9.
Systèmes et algorithmes répartis – IX
24 / 40
Simulation à événements
Simulation et temps réel
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
Amélioration 2 : calcul du LBTS
LBTS = lower bound on time stamp = borne inférieure des
messages ultérieurement reçus.
Tous les événements de date < LBTS peuvent être traités.
Calcul du LBTS
Pour un cliché (snapshot / état global passé), le LBTS est le
minimum de :
des estampilles des messages en transit,
pour les simulateurs non bloqués, de leur date courante
(+ lookahead si connu)
pour les simulateurs bloqués, de la date de leur prochain
événement (+ lookahead si connu)
⇒ calcul asynchrone (en arrière-plan) du LBTS + diffusion du
résultat
Systèmes et algorithmes répartis – IX
25 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Plan
1
Simulation à événements
Objectif et hypothèses
Répartition d’une simulation
Synchronisation des simulateurs
2
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Systèmes et algorithmes répartis – IX
26 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Réplication, temps réel et simulation
Contexte d’étude
Domaine : simulation (jeux, réalité virtuelle)
Réplication : problème de cohérence
Deux méthodes complémentaires
Retard local (local lag)
Timewarp ( distorsion du temps
)
Comparaison avec le dead reckoning (estimation)
d’après : Local Lag and Timewarp : providing consistency for
replicated continuous applications, Martin Moore, Jürgen Vogel,
Volker Hilt
Systèmes et algorithmes répartis – IX
27 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Domaine : simulation d’un univers actif
Hypothèses
Évolution continue dans le temps d’un état global répliqué
État global vu par tous les participants
Chaque opération d’un participant doit être diffusée aux autres
Les opérations sont datées (horloges locales)
op(i)
Evolution "continue"
Opération usager
Systèmes et algorithmes répartis – IX
op(i+1)
Tc
28 / 40
Hypothèses
Cohérence des opérations
Stratégies
Simulation à événements
Simulation et temps réel
Mouvement continu et événement local
Idéal (impossible) : Opération connue instantanément par les autres
Site S1
Temps
Site S2
T
T'
Systèmes et algorithmes répartis – IX
Délai de transmission du message
Commuter
29 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Technique de maintien de la cohérence
Principes de base
Datation des opérations par l’horloge locale du demandeur et
synchronisation des horloges locales (réelles)
Problème : Corriger les incohérences dues à l’arrivée trop tardive
d’une opération
Réagir avec retard : notion de local lag
Traiter par paquets et corriger si nécessaire : Timewarp
Calculer le futur probable et corriger si besoin : Dead
reckoning
Point clé : Compromis risque d’incohérence et temps de réponse
Systèmes et algorithmes répartis – IX
30 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Critère de cohérence de l’état global répliqué
Principe
Toute opération est diffusée à tous les autres sites
Prédicat Ri (. . .) :
0
∗
une opération est arrivée à temps
Ri (t, OP(j, T , T )) =
sur i
false si ri (OP(j, T 0 , T ∗ )) > t
true sinon
avec :
T 0 : date de requête et T ∗ : date d’exécution
ri (OP(. . .)) : date de l’événement de réception de OP sur le site i
Systèmes et algorithmes répartis – IX
31 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Critère de cohérence de l’état global répliqué (suite)
Cohérence globale
Si à l’instant t toutes les opérations sont connues de chaque site,
alors l’état de chaque site doit être identique
∀t, i, j, k : ∀OP(k, T 0 , T ∗ ) : T ∗ < t ::
Ri (t, OP(k, T 0 , T ∗ )) ∧ Rj (t, OP(k, T 0 , T ∗ ))
⇒ E (i, t) ≡ E (j, t)
Systèmes et algorithmes répartis – IX
32 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Correction de l’état global répliqué
Principe
Un site idéal virtuel P ordonne totalement toutes les opérations
instantanément
Critère de correction : si à t, toutes les opérations sont connues
par le site i, l’état du site i doit être identique à celui du site
idéal P
∀t, ink : ∀OP(k, T 0 , T ∗ ) ∈ OPE : T ∗ < t :: Ri (t, OP(k, T 0 , T ∗ ))
⇒ E (i, t) ≡ E (P, t)
Correction ⇒ Cohérence
Systèmes et algorithmes répartis – IX
33 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Cohérence et correction
Site S1
Temps
Site S2
Site Idéal
Temps
2
3
4
5
6
Systèmes et algorithmes répartis – IX
vis−à−vis du site 2
2
vis−à−vis du site 1
1
Zone d'incohérence
1
3
4
5
6
34 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Première stratégie : Local lag
Introduction d’un temps de réponse local minimal
Site S1
t1
Site S2
Site S3
∆Tr
t2
t3
∆Tr
t4
Un lag > délai max de communication garantirait la cohérence
Systèmes et algorithmes répartis – IX
35 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Seconde stratégie : Timewarp
Chaque simulateur fonctionne comme précédemment : il exécute
les événements qu’il connaı̂t dans l’ordre des estampilles, plus :
conservation des événements traités,
mécanisme de sauvegarde de son état (checkpointing ).
Quand un message en retard arrive (= dans le passé du
simulateur), retour en arrière (rollback) = annulation des effets des
événements traités à tort :
restauration des variables d’état à la date précédant ce
message
élimination des messages envoyés : anti-messages
puis le message en retard est traité.
Systèmes et algorithmes répartis – IX
36 / 40
Hypothèses
Cohérence des opérations
Stratégies
Simulation à événements
Simulation et temps réel
Timewarp : anti-messages
Un anti-message correspond à un vrai message (message
applicatif) envoyé précédemment
Quand un anti-message se retrouve dans une file d’attente
avec son message correspondant, ils s’annulent
Quand un anti-message arrive avant son message
correspondant, il est mis en attente de ce message
Quand un anti-message arrive et que son message
correspondant a déjà été traité ⇒ retour en arrière
Risque de cascade de retours en arrière (effet domino)
S1
15
32
S2
30
35
30
oops
41
S3
21
Systèmes et algorithmes répartis – IX
41
32
41
21
48
57
57
37 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Dead reckoning (navigation à l’estime)
Transmission des états (au lieu des opérations)
Objets au comportement prédictible ⇒ estimation de leur
évolution
Unicité du contrôleur d’un objet
Diffusion des états imprévus aux abonnés (résultats
d’opérations appliquées à l’objet)
Diffusion périodique (sans action usager) pour palier les pertes
de messages
Remarque Même technique de local lag applicable à la mise à jour
de l’état d’un objet
Systèmes et algorithmes répartis – IX
38 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Conclusion – simulation temps réel
Principe de base : retarder l’exécution des opérations
Estimer l’évolution en absence d’informations
Corriger ”en retard” si nécessaire ⇒ problèmes éventuels de
réalisme
Problème : conserver un temps de réponse acceptable :
→ réseau à qualité de service garantie
Systèmes et algorithmes répartis – IX
39 / 40
Simulation à événements
Simulation et temps réel
Hypothèses
Cohérence des opérations
Stratégies
Conclusion générale
Deux types d’applications
simulation d’un système pour étudier son comportement
simulation d’un environnement virtuel, complémentaire à
l’environnement réel
Système complexe ⇒ plusieurs simulateurs interconnectés
Exemple d’application répartie
Systèmes et algorithmes répartis – IX
40 / 40

Documents pareils