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