code SML
Chapitre 4 SKiPPER-II : une solution `a l’imbrication
4.3.2 Rep´ esentation interm´ ediaire de l’application
4.3.4.1 Avec le serveur de ressources
Le processus serveur de ressources, ou PLServer, est un processus destin´e `a tenir `a jour une liste des ressources disponibles et non utilis´ees sur le r´eseau de la machine cible et `a autoriser ou non leur acc`es. Une ressource pour le noyau de SKiPPER-II est une copie du noyau. En effet ce sont ces copies qui vont permettre le d´eroulement d’une s´equence de calcul. Il faut distinguer ce type de ressource logicielle des processeurs physiquement disponibles sur la machine cible : chaque processeur peut ˆetre charg´e avec plusieurs copies du noyau5.
Lors de l’ex´ecution d’un squelette (unit´e ex´ecutive de base), un certain nombre de copies du noyau vont coop´erer pour ´emuler le fonctionnement d’un TF/II. Celle qui joue le rˆole du processus maˆıtre est en charge du d´eploiement sur les ressources disponibles des esclaves du squelette. Cela signifie qu’elle doit trouver des ressources disponibles, les r´eserver, d´emarrer un processus esclave sur chacune d’elles et communiquer avec elles pour ex´ecuter le squelette. Pour chaque esclave `a activer le processus maˆıtre interroge le PLServer pour lui demander l’al-location d’une ressource. Le PLServer r´epond alors avec l’identifiant de la ressource disponible qu’il va r´eserver exclusivement `a ce squelette (cf. figure 4.10). A partir de cet instant les com-munications entre le maˆıtre et la copie du noyau d´esign´ee comme esclave pourra se faire de
Le nombre de ressources disponibles ne sera ´equivalent au nombre de processeurs disponibles que si une unique copie du noyau est charg´ee sur chaque processeur.
mani`ere s´ecuris´ee ´etant donn´e qu’aucun autre processus ne pourra acc´eder `a cette ressource. Si aucune ressource n’est disponible pour l’ex´ecution de l’esclave, le PLServer en informe le processus maˆıtre qui pourra d´ecider de poursuivre l’ex´ecution du squelette malgr´e la p´enurie de ressources, notamment en en s´equentialisant une partie. Lorsque l’ex´ecution d’un esclave est termin´ee, le maˆıtre signale au PLServer. Ce dernier met alors `a jour ses tables pour rendre la ressource lib´er´ee disponible pour d’autres squelettes. Pour autoriser l’attribution de certaines ressources `a un squelette, le PLServer tient compte de la position des copies du noyau qui sont libres (voir la figure 4.11 qui donne l’algorithme simplifi´e du PLServer). Mais l’allocation de ressources se fait aussi en fonction de la nature du processus qui doit ˆetre implant´e et ex´ecut´e. Sur un mˆeme processeur, seul un unique esclave peut ˆetre implant´e alors que plusieurs processus maˆıtre sont autoris´es `a s’ex´ecuter simultan´ement. Ainsi, si un processeur dispose de plusieurs copies du noyau, `a un instant donn´e seule une unique copie de cet ensemble peut ˆetre utilis´ee comme esclave alors que plusieurs autres peuvent ˆetre utilis´ees comme maˆıtre. La raison de ce m´ecanisme est la suivante. Les processus maˆıtre font tr`es peu de calculs contrairement aux processus esclaves et passent la majorit´e de leur temps `a attendre des donn´ees, ils peuvent ˆetre ex´ecut´es en pseudo-parall´elisme sur un unique processeur (sans pour autant gˆener l’ex´ecution d’un esclave). Ainsi placer plusieurs maˆıtres sur un mˆeme processeur optimise l’occupation des unit´es de calcul. Par contre placer plusieurs esclaves sur un mˆeme processeur reviendrait `a faire chuter les performances de l’application car le parall´elisme entre ces esclaves ne serait pas r´eel.
Processus MAITRE PLServer
Temps Demande d’allocation
Recherche d’une ressource libre
Phase de reservation
Demande de liberation
Liberation de la ressource
Confirmation de la liberation
Poursuite des traitements d’une ressource
de la ressource
indiquee dans la requete
Phase de liberation
Dans le cas ou la ressource ne peut etre allouee par le PLServer, seule la phase de reservation du diagramme entre en jeu, aucune ressource n’ayant plus a etre liberee puisque non reservee.
Attente de requete
et, eventuellement, allocation
Reception du numero de la ressource utilisable
Envoi du numero de la ressource allouee
Imformation d’impossibilite d’allocation (toutes les ressources sont occupees) OU
OU Annulation du deploiement
d’un esclave
Traitements Attente de requete
Tant que [ application non terminee ] Faire
Attendre une requete Selon [ requete ] Tester si
= allouer une ressource : Si [ pour un esclave ] Alors
Faire
Rechercher une ressource libre dans la table des ressources Si [ le processeur de la ressource libre ne possede
aucune autre ressource affectee a un esclave ] Alors
Mettre a jour la table des ressources
Confirmer l’allocation au processus demandeur Arreter la recherche de ressources libres Sinon
Continuer la recherche de ressources libres Fin
Tant que [ une ressource libre n’a pas ete trouvee et qu’il reste des ressources a evaluer ] Si [ aucune ressource n’est libre ]
Alors
Indiquer qu’aucune ressource n’est libre au processus demandeur Sinon
Rien Fin Sinon
/* Pour un processus maitre */ Faire
Rechercher une ressource libre dans la table des ressources Si [ une ressource libre a ete trouvee ]
Alors
Mettre a jour la table des ressources
Confirmer l’allocation au processus demandeur Arreter la recherche de ressources libres Sinon
Continuer la recherche de ressources libres Fin
Tant que [ une ressource libre n’a pas ete trouvee et qu’il reste des ressources a evaluer ] Si [ aucune ressource n’est libre ]
Alors
Indiquer qu’aucune ressource n’est libre au processus demandeur Sinon
Rien Fin Fin
= liberer une ressource :
Mettre a jour la table des ressources
Confirmer la liberation au processus demandeur Fin
Fait