• Aucun résultat trouvé

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