View
109
Download
0
Category
Preview:
Citation preview
Optimisations de la bibliothèque de communication MPI pour machines parallèles de type « grappe de PCs » sur une primitive d’écriture distante
Olivier Glück
UPMC/LIP6/ASIM
Olivier.Gluck@lip6.fr
2/46
Plan
1. Introduction : contexte et objectifs
2. MPI-MPC1 : MPI sur une primitive d’écriture distante
3. MPI-MPC2 : optimisations bas niveau
4. MPI-MPC3 : traductions d’adresses optimisées
5. Résultats expérimentaux
6. Conclusion
3/46
Contexte et hypothèses
Machines parallèles de type grappe de PCs sous UNIX
Applications MPI en mode « batch »
Réseau de communication : primitive d’écriture distante
le réseau est fiable
le contrôleur réseau utilise des accès DMA en lecture et en
écriture pour accéder à la mémoire du nœud hôte
le contrôleur réseau ne peut transférer que des zones
contiguës en mémoire physique
le nœud émetteur doit savoir à l’avance où déposer les
données sur le nœud récepteur
1ère partie - Introduction
4/46
La primitive d’écriture distante sur MPC
1ère partie - Introduction
Emetteur
M émoire A
CPU A
LM E
Données
NIC A
Récepteur
M émoire B
CPU B
LM R
Données
NIC B
1
2
3
4
5
6
Interruption
Interruption
5/46
Objectifs
Fournir l’environnement MPI :
machines parallèles de type « grappe de PCs »
primitive d’écriture distante
Réduire le chemin critique logiciel
1ère partie - Introduction
6/46
Les techniques d’optimisation
Eviter la traversée d’un grand nombre de couches de
communication
Réduire le nombre de copies des données
Réduire le nombre d’appel système en réalisant les
communications en espace utilisateur
Eviter l’utilisation d’interruptions pour la signalisation des
communications
Réduire le coût des opérations de traduction d’adresses
virtuelles/physiques
1ère partie - Introduction
7/46
Une stratégie « zéro-copie »
1ère partie - Introduction
Espaceutilisateur
Espacenoyau
Espaced'entées/sorties
Espaced'entées/sorties
Espacenoyau
Espaceutilisateur
Noeud émetteur Noeud récepteur
Noeud récepteurNoeud émetteur
Espaceutilisateur
Espaceutilisateur
8/46
Les appels système
1ère partie - Introduction
Processusutilisateur
Processusutilisateur
Pilote d'accèsà l'interface
réseau
Espace système
Interface réseau
9/46
Les interruptions
1ère partie - Introduction
Espace système
Pilote d'accès à l'interface réseau
Interrupt_handler()
Interface réseauévénem ent = fin de réception d'un m essage
Espace utilisateur
Processus utilisateur contenant labibliothéque de communication
M essage_received()
Interruptionmatérielle
Emission d'unsignal
10/46
Les traductions d’adresses
1ère partie - Introduction
N o eu d E m etteu r N o eu d R écep teu r
M ém o irev ir tu e lle
M ém o irep h y siq u e
tam
po
n u
tilis
ate
ur
tam
po
n u
tilis
ate
ur1
2
3
M ém o irep h y siq u e
M ém o irev ir tu e lle
11/46
La machine MPC
1ère partie - Introduction
Liens HSL
CPU 1
Co
nn
ecte
ur P
CI
RCube
PCIDDC
CPU 2
Co
nn
ecte
ur P
CI
RCube
PCIDDC
CPU 3C
on
necte
ur P
CI
RCube
PCIDDC
CPU 4
Co
nn
ecte
ur P
CI
RCube
PCIDDC
Console
Réseau de contrôle ETHERNET
12/46
La machine MPC
1ère partie - Introduction
13/46
La carte FastHSL
1ère partie - Introduction
Performances matérielles :
latence : 2 µs
débit maximum sur le lien : 1 Gbits/s (dans chaque sens)
débit utile matériel théorique : 512 Mbits/s
14/46
Plan
1. Introduction : contexte et objectifs
2. MPI-MPC1 : MPI sur une primitive d’écriture distante2. MPI-MPC1 : MPI sur une primitive d’écriture distante
3. MPI-MPC2 : optimisations bas niveau
4. MPI-MPC3 : traductions d’adresses optimisées
5. Résultats expérimentaux
6. Conclusion
15/46
MPICH : une architecture en couches
2ème partie - Architecture de MPI sur une primitive d’écriture distante
RDM A API
Interface réseau
MPI API
ADI
RDMA : Primitive d'écriture distantegénérique
CH_RDMA : MPI sur MPC
NIC
Espaceutilisateur
Espacesystème
Matériel
MPIDRIVER
Opérations collectives
Opérations point à point
16/46
L’API RDMA
2ème partie - Architecture de MPI sur une primitive d’écriture distante
RDMA : Remote Direct Memory Access
API générique d’écriture en mémoire distante
Objectifs :
définir la brique de base de notre implémentation de MPI
masquer les particularités des réseaux fournissant une
primitive d’écriture distante
Enjeu :
faire en sorte que notre travail puisse être exploitable sur
d’autres plate-formes matérielles
17/46
L’API RDMA
2ème partie - Architecture de MPI sur une primitive d’écriture distante
L’écriture distante :
RDMA_SEND(nsrc, ndst, plad, prad, len, ctrl, sid, rid, ns, nr)
La notification :
RDMA_SENT_NOTIFY(ctrl, sid)
RDMA_RECV_NOTIFY(nsrc, ctrl, rid)
La signalisation par scrutation (optionnelle) :
RDMA_NET_LOOKUP(blocking)
Format des messages :
len
ndst prad len nr nsrc rid ctrl
en -tê te R D M A
m essage M P I
paramètres supplémentaires à véhiculer de l’émetteur vers le récepteur
18/46
Les problèmes à résoudre
2ème partie - Architecture de MPI sur une primitive d’écriture distante
Les problèmes liés à la primitive d’écriture distante :
le dépôt direct en mémoire : l’émetteur doit connaître les
adresses physiques des tampons distants
l’utilisation d’adresses physiques alors que l’application
manipule des adresses virtuelles
Les services à fournir à MPICH :
transmission des messages CTRL/DATA
signalisation des événements réseau
mécanisme de contrôle de flux
fixer le seuil optimal entre les messages CTRL/DATA
19/46
Les messages CTRL
2ème partie - Architecture de MPI sur une primitive d’écriture distante
Transfert d’informations de contrôle ou de données de taille
limitée
Utilisation de tampons intermédiaires contigus en mémoire
physique et alloués au démarrage de l’application
pas de traduction d’adresses, adresse du tampon distant
connue sur l’émetteur, recopie systématique, contrôle de flux
Noeud 1 Noeud 3
N B U F tam pons
Réseau
buffer
3
2
1
2
20/46
Les messages DATA
2ème partie - Architecture de MPI sur une primitive d’écriture distante
Transfert des données de l’application en mode « zéro-copie »
Utilisation d’un protocole de rendez-vous entre l’émetteur et le
récepteur
traduction d’adresses sur l’émetteur et le récepteur, le message RSP
contient la description en mémoire physique du tampon de réception
RécepteurEmetteur
données
REQ
RSP
DATA
RécepteurEmetteur
REQ
do
nn
ées
RSP
RSP
DATA
DATA
. .
.
21/46
Le format des messages CTRL
2ème partie - Architecture de MPI sur une primitive d’écriture distante
S H O R T : 2 0 o c te ts + d tlen
crdt type tsrc tag dtlen données
dtlen
R E Q : 2 4 o c te tscrdt type tsrc tag dtlen sid
R S P : 2 0 o c te ts + 8 * N B _ D M Acrdt type tsrc sid rid recv_m ap
C R E D IT : 1 2 o c te tscrdt type tsrc
22/46
Le mode standard dans MPI
2ème partie - Architecture de MPI sur une primitive d’écriture distante
RécepteurEmetteur
données
REQ
RSP
DATA
MPI_Send ou MPI_Isend / MPI_Recv ou MPI_Irecv
cas 2 : taille des données > M AXcas 1 : taille des données < M AX
données
SHORT
Emetteur Récepteur
2 copies, 1 message 0 copie, 3 messages
23/462ème partie - Architecture de MPI sur une primitive d’écriture distante
E m etteu rt id _ s rc = 0 , n s rc = 0
R écep teu rt id _ d s t = 1 , n d s t = 1
M ém o irev ir tu e lle
M ém o irep h y siq u e
donn
ées
1
2
3
M ém o irep h y siq u e
M ém o irev ir tu e lle
len
ls1
ls2
lr1
lr2
v adp lad 1
p lad 2
p rad 2
p rad 1
Liens entre MPI et l’API RDMA
(p ra d 1 , lr1 ) (p ra d 2 , lr2 )
REQR D M A _ S E N D ()
R D M A _ S E N D ()RSP
R D M A _ S E N D ()(p la d 1 , ls1 ) (p la d 2 , ls2 )
R D M A _ S E N D ()R D M A _ S E N D ()
1
2
3
DATA
24/46
0
50
100
150
200
250
300
350
400
450
1 4 16 64 256
1K 4K 16K
64K
Taille du message (octets)
Déb
it (
Mb
its/
s)
MPI-MPC1 copie
MPI-MPC1 RDV
2ème partie - Architecture de MPI sur une primitive d’écriture distante
Performances de MPI-MPC1
Latence(µs)
Débit Max.(Mb/s)
Seuil(Ko)
Demi débit(Ko)
Latence RDV(µs)
MPI-MPC1 26 419 16 2 105
0
50
100
150
200
250
300
350
400
4501 4 16 64 256
1K 4K 16K
64K
256K
1024
K
4096
K
Taille du message (octets)
Déb
it (
Mb
its/
s)
MPI-MPC1
419
Processeur PII-350MHz
256Mo de RAM
Bus PCI 33MHz
Linux 2.2.18
25/462ème partie - Architecture de MPI sur une primitive d’écriture distante
N IC A
N IC B in terru p tio n m a tér ie lle
a ccès co n fig
a ccès co n figB us P C I
B us P C I
R D M A _ S E N T _ N O T IF Y
2 µ s
1 ,5 µ s1 ,5 µ s
a p p el sy stèm eR D M A _ S E N D (len = 2 1 )
a ccès co n fig1 ,5 µ s M P I_ R E C V (len = 1 )
C H R D M A _ N E T _ L O O K U P
C H R D M A _ N E T _ L O O K U P
C H R D M A _ C T L R E C V _ E V E N T
F in d u M P I_ R E C V
1 ,5 µ s
M P I_ S E N D (len = 1 )
C H R D M A _ S E N D _ S H O R T (len = 2 1 )
Appels systèmes Interruptions Recopies RDMA_SENDProtocole short rdv short rdv short rdv short rdv
MPI-MPC1 1 1+6F 2 2+4F 2 0 1 1+F+NB_DMA*F
Analyse des performances de MPI-MPC1
accès config = moyen de donner les
ordres au contrôleur réseau
26/46
Plan
1. Introduction : contexte et objectifs
2. MPI-MPC1 : MPI sur une primitive d’écriture distante
3. MPI-MPC2 : optimisations bas niveau3. MPI-MPC2 : optimisations bas niveau
4. MPI-MPC3 : traductions d’adresses optimisées
5. Résultats expérimentaux
6. Conclusion
27/463ème partie - Optimisations des couches basses de communication
Interface réseau : La carte FastHSL
RDMA : Primitive d'écriture distantegénérique
CH_RDMA : MPI sur MPC Espace utilisateur
Espacesystème
Matériel
MPIDRIVER
PUT : La primitive d'écriture distante de lamachine MPC
Interface réseau : La carte FastHSL
RDMA : Primitive d'écriture distantegénérique
CH_RDMA : MPI sur MPC
PUT : La primitive d'écriture distante de lamachine MPC
MPI-MPC1 MPI-MPC2
Objectifs de MPI-MPC2
Réaliser les communications en mode utilisateur en
partageant les ressources réseau.
Remplacer les interruptions matérielles par une
signalisation par scrutation.
Etudier l’impact de ces changements sur les performances.
28/463ème partie - Optimisations des couches basses de communication
Une écriture distante en mode utilisateur
In itia lisa tio n E critu re d ista n te G estio n n a ire d 'in terru p tio n
A ccès en co n fig u ra tio n
C o n trô leu r résea u
esp a ce sy stèm e
m a tér ie l
P U T
b u s P C I
In itia lisa tio n m a tér ie lle
C o n trô leu r résea u
esp a ce sy stèm e
m a tér ie l
b u s P C I
In itia lisa tio n E critu re d ista n te S ig n a lisa tio n
A ccès en co n fig u ra tio n
esp a ce u tilisa teu rP U T
29/463ème partie - Optimisations des couches basses de communication
Les problèmes à résoudre
Comment protéger l’accès en mode utilisateur aux ressources
partagées : LME, LMR, registres internes du contrôleur réseau ?
Comment réaliser une signalisation par scrutation ?
Comment garantir que toutes les entrées d’un même message
soient consécutives dans la LME ?
30/463ème partie - Optimisations des couches basses de communication
Principe de la méthode
m ém o ire v ir tu e lleP ro cessu s 2
L M E
L M R
p o in teu rs
m ém o ire v ir tu e lleP ro cessu s 1
L M E
L M R
p o in teu rs
m ém o ire p h y siq u e
po in teurs
L M R
L M E
N IC D M A
D M A
b u s P C I
31/463ème partie - Optimisations des couches basses de communication
La signalisation
On a rajouté deux primitives pour mettre à jour les états de
toutes les communications en cours :
scrutation de la LME en émission
scrutation de la LMR en réception
La scrutation est à l’initiative de MPI
32/463ème partie - Optimisations des couches basses de communication
Les verrous
verrou = variable mémoire partagée entre les différents processus
à chaque opération est associé un verrou
prise et libération d’un verrou atomique au niveau du processeur
(test&set en mode utilisateur)
plusieurs verrous pour ne verrouiller que ce qui est nécessaire à
l’opération en cours
33/463ème partie - Optimisations des couches basses de communication
Performances de MPI-MPC2
0
50
100
150
200
250
300
350
400
4501 4 16 64 256
1K 4K 16K
64K
256K
1024
K
4096
K
Taille du message (octets)
Déb
it (
Mb
its/
s)
MPI-MPC1
MPI-MPC2
421
Latence(µs)
Débit Max.(Mb/s)
Seuil(Ko)
Demi débit(Ko)
Latence RDV(µs)
MPI-MPC1 26 419 16 2 105MPI-MPC2 15 421 8 1 72
34/463ème partie - Optimisations des couches basses de communication
Appels systèmes Interruptions Recopies RDMA_SENDProtocole short rdv short rdv short rdv short rdv
MPI-MPC1 1 1+6F 2 2+4F 2 0 1 1+F+NB_DMA*FMPI-MPC2 0 4F 0 0 2 0 1 1+F+NB_DMA*F
Analyse des performances
En ce qui concerne la latence :
gain supérieur à 40% : de 26µs avec MPI-MPC1 à 15µs
15µs = 5µs (matérielle) + 10µs (logicielle soit 3500 cycles)
gain significatif en débit en ce qui concerne les messages de
petite taille
En ce qui concerne le débit maximum :
très faible gain car indépendant de la taille des données
35/46
Plan
1. Introduction : contexte et objectifs
2. MPI-MPC1 : MPI sur une primitive d’écriture distante
3. MPI-MPC2 : optimisations bas niveau
4. MPI-MPC3 : traductions d’adresses optimisées4. MPI-MPC3 : traductions d’adresses optimisées
5. Résultats expérimentaux
6. Conclusion
36/464ème partie - Optimisations des traductions d’adresses
Objectifs de MPI-MPC3
Supprimer les appels système liés aux traductions d’adresses
S’affranchir de la discontinuité des tampons de l’application
en mémoire physique
Faire en sorte que la méthode proposée soit transparente :
pas de modification de l’OS et de la librairie C
pas d’ajout de primitives au standard MPI
pas de modification du code de l’application, compatibilité
binaire (pas besoin de recompiler les fichiers objets)
Pour toutes les données susceptibles d’être transférées :
adresse virtuelle = adresse physique + déplacement
37/464ème partie - Optimisations des traductions d’adresses
Principe de la méthode
1 . S a u v eg a rd e d es seg m en ts su r le d isq u e
zo n e p ile
zo n e d o n n ées
M ém o ire p h y siq u e......
2 . R éserv a tio n d e zo n es p h y siq u es co n tig u ës
4 . R eco p ie d es seg m en ts en m ém o ire p h y siq u e3 . P ro jectio n en m ém o ire v ir tu e lle
M ém o ire p h y siq u e......
A n cienseg m en t d e p ile
A n cien sseg m en ts d e
co d e e t d ed o n n ées
M ém o ire v ir tu e lle
D isq u e d u r lo c a l
S eg m en t d e p ile
S eg m en ts d eco d e e t d ed o n n ées
S eg m en t d e p ile
S eg m en ts d eco d e e t d ed o n n ées
D isq u e d u r lo c a l
M ém o ire p h y siq u e......
M ém o ire v ir tu e lle
38/464ème partie - Optimisations des traductions d’adresses
Performances de MPI-MPC3
0
100
200
300
400
500
6001 4 16 64 256
1K 4K 16K
64K
256K
1024
K
4096
K
Taille du message (octets)
Déb
it (
Mb
its/
s) MPI-MPC1MPI-MPC2MPI-MPC3
485
Latence(µs)
Débit Max.(Mb/s)
Seuil(Ko)
Demi débit(Ko)
Latence RDV(µs)
MPI-MPC1 26 419 16 2 105MPI-MPC2 15 421 8 1 72MPI-MPC3 15 485 4 1,5 49
39/464ème partie - Optimisations des traductions d’adresses
Appels systèmes Interruptions Recopies RDMA_SENDProtocole short rdv short rdv short rdv short rdv
MPI-MPC1 1 1+6F 2 2+4F 2 0 1 1+F+NB_DMA*FMPI-MPC2 0 4F 0 0 2 0 1 1+F+NB_DMA*FMPI-MPC3 0 0 0 0 2 0 1 1+F+F
Analyse des performances
Suppression des appels système liés aux traductions d’adresses
Réduction du nombre d’écritures distantes pour transmettre un
message DATA : de plusieurs centaines à 1 seule pour
transmettre 1024Ko
Réduction de la taille du message RSP dans le protocole de
rendez-vous : de plusieurs Ko à 28 octets
40/46
Plan
1. Introduction : contexte et objectifs
2. MPI-MPC1 : MPI sur une primitive d’écriture distante
3. MPI-MPC2 : optimisations bas niveau
4. MPI-MPC3 : traductions d’adresses optimisées
5. Résultats expérimentaux5. Résultats expérimentaux
6. Conclusion
41/46
C a lcu l d e R 1 C a lcu l d e R 2 C a lcu l d e R 3
E m issio n d e R 1 à 2 e t 3 E m issio n d e R 2 à 1 e t 3 E m issio n d e R 3 à 1 e t 2
R écep tio n d e R 2 e t R 3 R écep tio n d e R 1 e t R 2R écep tio n d e R 1 e t R 3
C a lcu l d e 2 C a lcu l d e 2 C a lcu l d e 2
P 1 P 2 P 3
5ème partie - Résultats expérimentaux avec des applications réelles
Résultats avec CADNA
CADNA : logiciel pour prendre en compte les erreurs
d’arrondi dans les calculs numériques
Taille dusystèmelinéaire
Nombred’échanges
Temps descommunications
(sec.)
Temps d’un échange
(µs)
MPI-MPC1 MPI-MPC2 MPI-MPC1 MPI-MPC2800 646682 51 31 79 481200 1450450 101 66 70 461600 2574140 191 128 74 502000 4018285 288 177 72 44
Temps moyen d’un échange (µs) 74 47
Gain de 36% avec MPI-MPC2
42/465ème partie - Résultats expérimentaux avec des applications réelles
Résultats avec Laplace
Résolution de l’équation de Laplace par la méthode de
Jacobi sur 4 processeurs
Nombrede
colonnes
Nombred’itéra-
tions
Tempsséquentiel
(sec.)
Temps d’exécutionparallèle
(sec.)Speed-up
MPI-MPC2 MPI-MPC3 MPI-MPC2 MPI-MPC312800 3150 327,6 92,6 92,3 3,5 3,525600 3150 689,3 187,9 185,4 3,7 3,751200 3150 1441,3 391,5 384,8 3,7 3,7
Nombrede
colonnes
TailleFrontière
(Ko)
Nombred’échanges
de frontières
Temps d’échanges desfrontières
(sec.)
Différence
(sec.)
Gain
(%)MPI-MPC2 MPI-MPC3
12800 50 1,5 15,8 13,9 1,9 12%25600 100 1,5 31,0 26,9 4,1 13%51200 200 1,5 63,4 55,3 8,1 13%
43/46
Plan
1. Introduction : contexte et objectifs
2. MPI-MPC1 : MPI sur une primitive d’écriture distante
3. MPI-MPC2 : optimisations bas niveau
4. MPI-MPC3 : traductions d’adresses optimisées
5. Résultats expérimentaux
6. Conclusion6. Conclusion
44/466ème partie - Conclusion
Objectifs atteints
Une implémentation optimisée de MPI sur une primitive
d’écriture distante générique (RDMA)
Suppression des appels système et des interruptions lors des
phases de communication
Gain en latence
Simplification des traductions d’adresses :
adresse virtuelle = adresse physique + déplacement
Gain en débit
Confirmation des résultats obtenus avec un ping-pong sur
deux applications réelles
45/46
0%5%
10%15%20%25%30%35%40%45%50%
1 4 16 64 256
1K 4K 16K
64K
256K
1024
K
4096
K
Taille du message (octets)
Gai
n e
n d
ébit
(%
)
Gain MPI-MPC2 / MPI-MPC1 Gain MPI-MPC3 / MPI-MPC2
6ème partie - Conclusion
Résultats obtenus
26
15 15
0
5
10
15
20
25
30
Latence (µs)
MPI-MPC1
MPI-MPC2
MPI-MPC3
419 421
485
0
100
200
300
400
500
600
Débit max (Mbits/s)
MPI-MPC1
MPI-MPC2
MPI-MPC3
46/466ème partie - Conclusion
Perspectives
Recouvrement calcul/communication : une implémentation
multi-threads
Le standard MPI2 :
création dynamique de tâches
primitives de communication unidirectionnelle sans action du
processeur distant
Portage sur d’autres plate-formes matérielles :
Myrinet
ANI/HSL
Optimisations de la bibliothèque de communication MPI pour machines parallèles de type « grappe de PCs » sur une primitive d’écriture distante
Olivier Glück
UPMC/LIP6/ASIM
Olivier.Gluck@lip6.fr
48/462ème partie - Architecture de MPI sur une primitive d’écriture distante
La signalisation
SCTL_FLAG RCTL_FLAG SDATA_FLAG RDATA_FLAG
CHRDMA_NET_LOOKUP
CH
_RD
MA
RD
MA
noeud 1 noeud 2 noeud 3
Espace u tilisa teur
Espace systèm e
RDMA_SENT_NOTIFY(type, sid) RDMA_RECV_NOTIFY(nsrc, type, rid)
Interruption matérielle
handler d'interruptions
NIC
M atérie l
PU
T
fin d 'ém ission ou fin de réception
49/463ème partie - Optimisations des couches basses de communication
S C T L _ F L A G R C T L _ F L A G S D A T A _ F L A G R D A T A _ F L A G
C H R D M A _ N E T _ L O O K U P (b lo ck in g )
CH
_RD
MA
RD
MA
n o e u d 1 n o e u d 2 n o e u d 3
E sp ace u tilisa teu r
R D M A _ S E N T _ N O T IF Y (ty p e , s id )
R D M A _ R E C V _ N O T IF Y (n src , ty p e , r id )
reg istres in tern esNIC
M atérie l
PU
T
B u s P C I
R D M A _ N E T _ L O O K U P(b lo ck in g )
P U T _ F L U S H _ L M E P U T _ F L U S H _ L M R
accès en co n figu ra tio n
La signalisation
50/463ème partie - Optimisations des couches basses de communication
Les ressources partagées
La Liste des Messages à Emettre (LME)
La Liste des Messages Reçus (LMR)
Les registres internes du contrôleur réseau
...L M R _ C U R
L M R _ N E W
L M R
......
L M E _ C U R
L M E _ N E W
L M E
...
51/462ème partie - Architecture de MPI sur une primitive d’écriture distante
Les émissions/réceptions simultanées
Pourquoi : pouvoir traiter plusieurs émissions/réceptions
simultanément besoin d’identifier une communication
x
1 2
sid rid
3 lib re
2 1
Emissions de x
z
y
1 1
rid sid
3 lib re
2 1
Réceptions de y
1 2
rid sid
3 lib re
2 lib re
Réceptions de z
1 1
sid rid
3 lib re
2 lib re
Emissions de z
(1 , 2)
(2 , 1)(1 , 1)
4 lib re
4 lib re
4 lib re
4 lib re
On utilise des tables associatives :
- sid cho is i par l'émetteur- rid cho is i par le récepteur
1 canal (sid,rid) à la durée de vie d'un message
52/464ème partie - Optimisations des traductions d’adresses
Les problèmes à résoudre
Comment faire pour projeter les zones contiguës en
mémoire physique dans la mémoire virtuelle du processus à
l’emplacement des anciens segments ?
utilisation d’une librairie dynamique : exécution de code en dehors du segment de code du processus
déplacement du segment de pile du processus
Comment réaliser ces opérations de façon transparente
pour l’utilisateur avant l’exécution de l’application ?
utilisation d’un langage objet permettant d ’exécuter du code avant le début de l’application : ces opérations sont réalisées dans le constructeur de l’objet
53/46
Espace d’adressage
M ém o irev irtu e lle d u
n o y a u
E n v iro n n em en t
A rg u m en ts
P ile
D o n n ées (b ss)
D o n n ées (d a ta )
C o d e
T a s
0 x F F F F F F F F
0 x C 0 0 0 0 0 0 0
0 x 0 8 0 4 8 0 0 0
L ib ra ir iesd y n a m iq u es 0 x 4 0 0 0 0 0 0 0
0 x 0 0 0 0 0 0 0 0
1 G
iga-
octe
ts3
Gig
a-oc
tets
54/46
Le tas
D o n n ées (b ss)
D o n n ées (d a ta )
C o d e
zo n e lib re
0 x 0 8 0 4 8 0 0 0
b rkzo n e b o u ch o n
s ta r t_ b rkzo n e d o n n ées
M ém o ire p h y siq u e M ém o ire v ir tu e lle d u p ro cessu s
55/46
La pile
zo n e p ile
M ém o ire p h y siq u e M ém o ire v ir tu e lle d u p ro cessu s
E n v iro n n em en t
A rg u m en ts
A n cien n e p ile
0 x C 0 0 0 0 0 0 0
L ib ra ir iesd y n a m iq u es
sp
E n v iro n n em en t
A rg u m en ts
N o u v e lle p ilesp
0 x 4 0 0 0 0 0 0 0
56/46
Compilation
class Redistrib{ Redistrib(); ~Redistrib(); ...}
#include "Redistrib.hh"// constructeurRedistrib::Redistrib(){ //opérations à réaliser //avant le main ...}// destructeurRedistrib::~Redistrib(){ ...}
main(){
...
}
M o n a p p li.c o u M o n a p p li.ccR ed istr ib .ccR ed istr ib .h h
L ib ra ir ie d y n a m iq u e (lib R ed is tr ib .so ) A p p lica tio n M P I
#include "Redistrib.hh"
Redistrib MPC;
m p c.cc
57/46
Les différentes étapes
informations utilisateur
taille des zones « pile » et « données »
augmentation taille du tas
sauvegarde sur disque
réservation mémoire physique
projection
recopie des segments sauvegardés
translation du pointeur de pile
modification des arguments
empilement des paramètres du main puis call
restauration du contexte + ret
appel du destructeur
58/46
M ém o ire p h y siq u e
E sp a ce d 'a d ressa g e g lo b a l d e S C I
N o eu d i N o eu d j
E X P O R T IM P O R T
Le réseau SCI
lectures/écritures distantes mais paradigme de programmation différent
zones exportées/importées limitées
correspondance virtuelle/physique dans l’interface réseau
59/46
GM
« registering memory » : primitives pour verrouiller un tampon
et informer le contrôleur réseau de la correspondance
virtuelle/physique
gm_directed_send(port, src_buf, dst_buf, len, dst_id, …) :
écriture distante vers une zone enregistrée au préalable
(désactivé par défaut)
Recommended