Your SlideShare is downloading. ×
Simulations et applications réparties sous LINUX
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Simulations et applications réparties sous LINUX

931
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
931
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Simulations et applications réparties sous LINUX AHMED TOUMANARI Université Ibn zohr TOUMANARI- LINUX DAYS-2008
  • 2. PLAN - Algorithme distribué - RPC - RMI - CORBA - Service web - Clustring TOUMANARI- LINUX DAYS-2008
  • 3. Introduction Déviation : synchronisation exacte impossible Solutions :  Synchronisation approximative des horloges physiques  Utilisation d’horloges logiques TOUMANARI- LINUX DAYS-2008
  • 4. NTP: Network Time Protocol TOUMANARI- LINUX DAYS-2008
  • 5. Temps & Horloges Logiques 1 2 ,2 3 4 ,4 1 5 TOUMANARI- LINUX DAYS-2008
  • 6. Ordonnancement Total des Événements 1, 0, 0 2, 0, 0 ,(2, 0, 0) 2, 1, 0 2, 2, 0 ,(2, 2, 0) 0, 0, 1 2, 2, 2 TOUMANARI- LINUX DAYS-2008
  • 7. Coupes P1 P2 P3 • La coupe est représentée sous forme de courbe pointillée – L’intersection avec le trait d’un processus indique le point de sauvegarde de l’état local • Tout message noté comme reçu dans la coupe a aussi été noté comme envoyé • Cette coupe est dite cohérente TOUMANARI- LINUX DAYS-2008
  • 8. Coupes P1 P2 P3 • Un message a été noté comme reçu mais non envoyé • Cette coupe est dite non cohérente • En cas de reprise après une panne, P3 considèrera avoir reçu un message de P2 mais celui-ci ne l’aura pas encore envoyé TOUMANARI- LINUX DAYS-2008
  • 9. LIB,0,1 – 0 LIB,0,1 – 0 LIB,0,1 – 0 LIB,0,2 – 0 LIB,0,2 – 0 1 LIB,0,2 – 0 1 1 2 LIB,0,3 – 0 2 LIB,0,3 – 0 LIB,0,3 – 0 2 3 3 4 REQ,2,1 – 3 3 REQ,2,2– 2 5 5 REQ,2,1 – 2 ACK,4,3 – 5 6 REQ,2,2– 3 7 6 ACK,6,3 – 7 8 9 LIB,10,1 – 11 10 REQ,2,2– 2 10 11 ACK,4,3 – 5 12 11 13 13 LAMPORT TOUMANARI- LINUX DAYS-2008
  • 10. A1=φ A2=φ A3=φ F1=φ F2=φ F3=φ 1 1 1 2 2 2 A1=φ 3 3 A3=φ F1=S2 F3=S2 3 A3=φ 4 4 F3=S2,S1 4 5 A1=S2 5 6 7 6 A3=S2,S1 F1=S2 8 F3=S2,S1 A1=S2,S3 10 9 F1=S2 F3= φ A2=S3 10 11 F1= φ 12 A2=S3,S1 RICART TOUMANARI- LINUX DAYS-2008
  • 11. r11 r12 Zid = RV1[1] RV1=(1,0) RV1=(2,0) m1, (2,0), 0 m2, (2,2), 2 r21 r22 RV2=(0,1) (2,1) RV2=(2,2) Zid # RV2[2] TOUMANARI- LINUX DAYS-2008
  • 12. RPC TOUMANARI- LINUX DAYS-2008
  • 13. Principe des RPC Requête Service Identification Port-Mapper Version Sous-Version Serveur Protocole N° de port TOUMANARI- LINUX DAYS-2008
  • 14. TOUMANARI- LINUX DAYS-2008
  • 15. TOUMANARI- LINUX DAYS-2008
  • 16. Exemple de montage Client Serveur / / users bin users bin local root equipes old new test root A B C D optim compat travail archive mount –t nfs Serveur:/users/equipes/A /users/A TOUMANARI- LINUX DAYS-2008
  • 17. Exemple de montage Client Serveur / / users bin users bin local root equipes old new test root A A B C D optim compat travail archive TOUMANARI- LINUX DAYS-2008
  • 18. RMI TOUMANARI- LINUX DAYS-2008
  • 19. Le rêve de tout système distribué 1) d’invoquer une méthode d’un objet se trouvant sur une autre machine exactement de la même manière que s’il étais locale 2) d’utiliser un objet distant (OD), sans savoir où il se trouve, en demandant à un service « dédié » de renvoyer son adresse 3) de pouvoir passer un OD en paramètre d’appel à une méthode locale ou distante 4) de pouvoir récupérer le résultat d’un appel distant sous forme d’un nouvel objet qui aurait été créé sur la TOUMANARI- LINUX DAYS-2008 machine distante
  • 20. Processus de développement d’une application RMI 1) définir une interface Java pour un OD 2) créer et compiler une classe implémentant cette interface 3) créer et compiler une application serveur RMI 4) créer les classes Stub et Skeleton (rmic) 5) démarrer rmiregister et lancer l’application serveur RMI 6) créer, compiler et lancer un programme client accédant à des OD du serveur TOUMANARI- LINUX DAYS-2008
  • 21. CORBA TOUMANARI- LINUX DAYS-2008
  • 22. Vue du modèle O.M.A. Services Objets de domaines Annuaire Transaction Médecine Electronique Le bus C.O.R.B.A. Client Serveur Administration Impression Applications utilisateurs Utilitaires communs TOUMANARI- LINUX DAYS-2008
  • 23. Architecture générale fichier IDL Client Implémentation d’objet pré­compilateur SSI DSI DII SII Stub Interface Interface de  client ORB l ’adaptateur Adaptateur d’Objet noyau de l ’Object Request Broker (ORB) Référentiel Référentiel des interfaces des implémentations Rint Rimp TOUMANARI- LINUX DAYS-2008
  • 24. POAManager & POA SERVEUR Servan Servan Requête tt s client ORB POA POAManager POA Servan (orb) POA* t Servan Servan t Servan t Servan t Servan tt *RootPOA (rootpoa) TOUMANARI- LINUX DAYS-2008
  • 25. Serveur service de nommage Client ORB resolve_initial_references (quot;NameServicequot;) objet resolve_initial_references (quot;NameServicequot;); CosNaming:: Conversion NamingContext conversion Invocation conversion Bind() resolve() TOUMANARI- LINUX DAYS-2008
  • 26. Un canal d’évènements Flot des évènements Consommateur Producteur Consommateur Producteur Canal Consommateur Consommateur TOUMANARI- LINUX DAYS-2008
  • 27. Un canal d’évènements : notification PushConsumer PushSupplier Consommateur Producteur Push void push(in any data) raises(Disconnected); Consommateur Producteur Canal Push Consommateur Consommateur Producteur actif / Consommateur réactif Le canal diffuse les évènements TOUMANARI- LINUX DAYS-2008
  • 28. Un canal d’évènements demande Consommateur Producteur Pull() Consommateur Producteur Canal Pull() Consommateur PullSupplier { demande //demande de production d’un événement any pull() raises(Disconnected); Consommateur // présence d’un événement any try_pull(out boolean has_event) raises(Disconnected); Producteur réactif / Consommateur actif TOUMANARI- LINUX DAYS-2008 Le canal procure les évènements
  • 29. Un canal d’évènements : file d’évènements Consommateur Producteur Pull() Consommateur Producteur Canal Push() Consommateur Consommateur Producteur actif / Consommateur actif Le canal gère des files d’évènements TOUMANARI- LINUX DAYS-2008
  • 30. Un canal d’évènements collecte d’évènements Consommateur Producteur Push() Consommateur Producteur Canal Pull() Consommateur Consommateur Producteur réactif / Consommateur réactif Le canal est une entité active voire intelligente TOUMANARI- LINUX DAYS-2008
  • 31. Service Web TOUMANARI- LINUX DAYS-2008
  • 32. Cycle de vie d’utilisation 2 : J’ai trouvé! Voici le serveur hébergeant ce service web Annuaire UDDI 3 : Quel est le format d’appel du service que tu proposes? 1 : Je recherche un service WEB Contrat SOAP 4 : Voici mon contrat (WSDL) XML Client Serveur XML 5 : J’ai compris comment invoquer ton service et je t’envoie un document XML représentant ma requête XML TOUMANARI- LINUX DAYS-2008 6 : J’ai exécuté ta requête et je te retourne le résultat
  • 33. CLUSTRING TOUMANARI- LINUX DAYS-2008
  • 34. NOW tâche 1 Workstation = Node tâche 1, tâche2 tâche(s) éléments d'interconnexion Workstation = Server Node tâche 2 Workstation = Node CLUSTER TOUMANARI- LINUX DAYS-2008
  • 35. LES MOTIVATIONS D’UN CLUSTER  Cluster scientifique (déchiffrement des clés de cryptage de plus  en plus longues, simulation nucléaire…)  Cluster de stockage (stockage d’énormes fichiers…)  Cluster haute disponibilité (architecture firewall…)  Cluster à répartition de charge (architecture serveur web,  architecture système utilisateur…)  TOUMANARI- LINUX DAYS-2008
  • 36. OPENMOSIX ?  Cluster à répartition de charge entre processus   Extension et enrichissement du noyau Linux (patchs + quelques  binaires) afin de supporter le clustering   Chaque Nodes est équivalent et tourne sous un noyau MOSIX   Utilisation d’un algorithme dit de « fork and forget »   Optimisation constante de la répartition (load balancing)  algorithme dissémination d’information probabiliste   algorithme de gestion mémoire         # S.E      # MPI/PVM  TOUMANARI- LINUX DAYS-2008
  • 37. Installation  • Modifier les sources du noyau par le fichier de « patch » de openMosix • le recompiler pour obtenir un nouveau noyau intégrant les fonctionnalités openMosix TOUMANARI- LINUX DAYS-2008
  • 38. • créer un fichier de conf. /etc/openMosix.map (ou lancer le démon de découverte  automatique) Syntaxe :  MOSIX­node­number IP­address range­size   Exemple :   #fichier /etc/mosix.map 1 192.168.0.1 6 7 192.168.0.100 1 7 192.168.1.100 1 8 192.168.1.1 6 • installer les outils d’administration openMosix­tools et l’interface graphique  openMosixview  • modifier le secteur de démarrage (grub ou lilo) et démarrer la machine sur le  nouveau noyau • Possibilité d’utiliser des assistants de distribution, comme LTSP (www.LTSP.org)  dans une architecture homogène  TOUMANARI- LINUX DAYS-2008
  • 39. Exemple produit Matriciel • Calcul de produit C= A1p* A2p*… Amp*, tel que Ai est une matrice carrée de taille n*n, sur une Grille de X nœuds regroupés en Y clusters P P P n c = n A1 x A2 x … Am n n n n TOUMANARI- LINUX DAYS-2008
  • 40. •La matrice C est partagée horizontalement Cluster 1 1 2 3 … X en Y paquets de lignes et verticalement en X paquets de colonnes … •Chaque cluster s’occupe de calculer un Cluster 2 1 2 3 X . . . . . . . . paquet de lignes . . . . •A l’intérieur d’un cluster, les nœuds Cluster Y 1 2 3 … X calculent le produit matriciel La matrice résultat C Réseau à haute vitesse Noeud initiateur … … … 1 2 3 X 1 2 3 X 1 2 3 X TOUMANARI- LINUX DAYS-2008 Cluster 1 Cluster 2 Cluster Y
  • 41. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 Cluster 1 TOUMANARI- LINUX DAYS-2008 Cluster 2
  • 42. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 Cluster 1 TOUMANARI- LINUX DAYS-2008 Cluster 2
  • 43. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 A11 A12 A13 A14 A11 A12 A13 A14 A21 A22 A23 A24 A21 A22 A23 A24 A11 A12 A13 A14 A31 A32 A11 A12 A13 A14 A33 A34 A31 A32 A33 A34 A31 A32 A31 A32 A33 A34 A33 A34 A21 A22 A23 A24 x A41 A42 A21 A22 A23 A24 x A43 A44 A41 A42 A43 A44 x A41 A42 A41 A42 A43 A44 x A43 A44 = = = = TOUMANARI- LINUX DAYS-2008 Cluster 1 Cluster 2
  • 44. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 A11 A12 A13 A14 A11 A12 A13 A14 A21 A22 A23 A24 A21 A22 A23 A24 A11 A12 A13 A14 A31 A32 A11 A12 A13 A14 A33 A34 A31 A32 A33 A34 A31 A32 A31 A32 A33 A34 A33 A34 A21 A22 A23 A24 x A41 A42 A21 A22 A23 A24 x A43 A44 A41 A42 A43 A44 x A41 A42 A41 A42 A43 A44 x A43 A44 = = = = C11 C12 C13 C14 C31 C32 C31 C32 TOUMANARI- LINUX DAYS-2008 C21 C22 C23 C24 C41 C42 C41 C42 Cluster 1 Cluster 2
  • 45. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 A11 A12 A13 A14 A11 A12 A13 A14 B311B312 A311A312 B313B314 A313A314 B331B332 A331A332 B333B334 A333A333 A21 A22 A23 A24 A21 A22 A23 A24 B321B322 A321A322 B323B324 A323A324 B341B342 A341A342 B343B344 A344A344 A31 A32 C11 C12 C13 C14 A33 A34 C31 C32 C31 C32 A31 A32 C31 C32 C31 C32 A33 A34 C11 C12 C13 C14 x A41 A42 C21 C22 C23 C24 x A43 A44 C41 C42 C41 C42 x A41 A42 C41 C42 C41 C42 x A43 A44 C21 C22 C23 C24 = = = = A311A312 A313A314 A331A332 A331A332 TOUMANARI- LINUX DAYS-2008 A321A322 3 3 A 23A 24 A341A342 A341A342 Cluster 1 Cluster 2
  • 46. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 A311A312 A313A314 A311A312 A313A314 A321A322 A323A324 A321A322 A323A324 B311B312 B313B314 A331A332 B311B312 B313B314 A333A334 B331B332 B333B334 A331A332 B331B332 B333B334 A333A334 B321B322 B323B324 x A 41A 42 B321B322 B323B324 x A 43A 44 B341B342 B343B344 x A 41A 42 B341B342 B343B344 x A 43A 44 3 3 3 3 3 3 3 3 = = = = C11 C12 C13 C14 C31 C32 C31 C32 TOUMANARI- LINUX DAYS-2008 C21 C22 C23 C24 C41 C42 C41 C42 Cluster 1 Cluster 2
  • 47. Merci de votre attention TOUMANARI- LINUX DAYS-2008