• Aucun résultat trouvé

(a) Concentration des tˆaches (b) Ordonnancement coop´eratif impli- cite (co-scheduling)

Figure2.4 – Exemples d’approches r´eduisant la fragmentation dans le gang scheduling.

En r´ealit´e, la granularit´e propos´ee par le co-scheduling est plus fine et consid`ere que l’inter-communication entre les processus n’est pas n´ecessairement uniforme. Il est donc possible de n’ex´ecuter sur un mˆeme quantum que les processus les plus fortement li´es. La d´esignation des processus fortement li´es peut ˆetre faite par l’utilisateur lors de la description de sa tˆache, ou r´ealis´ee `a la vol´ee par le gestionnaire de ressources en observant les diff´erentes connexions r´eseaux entre les processus. La Figure 2.4(b) montre une telle ex´ecution. Dans cet exemple, la fragmentation est r´eduite en ex´ecutant une partie de la tˆache 2 et de la partie 3 durant les quantum t1et t3.

Le changement de contexte global est une fonctionnalit´e critique dans les ordonnanceurs `a partition- nement temporel. Il faut en effet assurer un temps de changement de contexte le plus court possible puisque durant celui-ci, aucune tˆache n’est ex´ecut´ee. Il faut ´egalement assurer que la dur´ee d’un quantum est grande par rapport `a la dur´ee d’un changement de contexte afin que la grappe soit utilis´ee princi- palement pour l’ex´ecution des tˆaches et non leur manipulation. Ce temps de changement de contexte est ´egalement critique si des applications utilisent des connexions r´eseaux. Si l’application est suspendue trop longtemps, alors la connexion r´eseau peut ˆetre ferm´ee par les autres participants (dans le cas de l’expiration du d´elai maximal d’attente de r´eponse dans le protocole TCP par exemple). Synchroniser tous les changements de contexte des diff´erents processeurs d’une grappe est coˆuteux et les strat´egies de

gang scheduling souffrent de probl`emes de passage `a l’´echelle. Le co-scheduling permet de r´eduire ce coˆut et d’am´eliorer le passage `a l’´echelle en ne r´ealisant le changement de contexte que sur un sous-ensemble de nœuds.

2.4

Conclusion

Nous avons r´ealis´e dans ce chapitre un ´etat de l’art relatif `a la gestion des tˆaches dans les grappes de ser- veurs. Les travaux portant sur les mod`eles de tˆaches prennent en compte la flexibilit´e `a la fois des tˆaches et du mode de partitionnement des ressources pour proposer diff´erents contextes d’utilisations. Les mod`eles totalement rigides consid`erent une allocation et une utilisation des ressources constante tandis que les mod`eles dynamiques permettent un partitionnement des ressources adapt´e `a des tˆaches ayant des besoins variables. Ces diff´erents mod`eles servent de base `a diff´erentes strat´egies d’ordonnancement permettant l’ex´ecution simultan´ee de plusieurs tˆaches grˆace `a un d´ecoupage spatial ou temporel des partitions. Un des objectifs des gestionnaires de ressources est de permettre un taux d’occupation maximale des ressources afin d’ex´ecuter les tˆaches au plus tˆot. Les approches les plus efficaces proposent une gestion des tˆaches `a la vol´ee o`u les ressources sont allou´ees selon le besoin r´eel des applications et la charge de la grappe et non selon une estimation, souvent peu pr´ecise, des utilisateurs. De plus, le partitionnement temporel permet de g´erer les tˆaches avec un grain plus fin en ex´ecutant les tˆaches de mani`ere pr´eemptible.

L’impl´ementation de strat´egies d’ordonnancement complexe tel que le gang scheduling ou le co-

scheduling est plus d´elicate que l’impl´ementation de strat´egies `a base de partitionnement spatiale. Les strat´egies `a base de partitionnement temporelle repose en effet sur une gestion dynamique des tˆaches et n´ecessitent donc des m´ecanismes d´edi´es `a la manipulation de celles-ci en temps r´eelles tels que la mi- gration et la suspension sur disque. Proposer une impl´ementation g´en´erique de ces m´ecanismes avec un syst`eme d’exploitation standard et des processus est complexe [MDP+00] et tend `a limiter l’utilisation de tels algorithmes [ET05].

Nous discuterons plus en d´etail des limitations actuelles de ces approches dans le chapitre 5 et nous proposeront une solution consistant `a embarquer les composants des tˆaches dans des machines virtuelles

syst`emes. Le chapitre suivant pr´esente un ´etat de l’art relatif `a la virtualisation et aux machines virtuelles syst`emes.

Chapitre 3

Les machines virtuelles

O`u nous pr´esentons un ´etat de l’art sur la virtualisation syst`eme. Nous discutons des besoins historiques qui ont motiv´e le principe de protection dans les syst`emes d’exploitation puis l’iso- lation par la virtualisation syst`eme. Nous discutons ´egalement des diff´erentes approches pour la virtualisation syst`eme et des m´ecanismes de migration, de suspension et de reprise d’activit´e qui permettent de manipuler les machines virtuelles.

Sommaire

3.1 Protection dans les syst`emes d’exploitation . . . 20 3.2 Machine virtuelle applicative . . . 21 3.3 Machine virtuelle syst`eme . . . 21 3.4 Les approches pour la virtualisation syst`eme . . . 21 3.4.1 Virtualisation pure . . . 22 3.4.2 Para-virtualisation . . . 22 3.4.3 Virtualisation pure assist´ee . . . 23 3.4.4 Virtualisation du syst`eme d’exploitation . . . 23 3.5 Hyperviseur natif, hyperviseur applicatif . . . 24 3.6 Capture d’´etat et migration des machines virtuelles . . . 24 3.7 Conclusion . . . 26

L

impl´ementation de strat´egies d’ordonnancement complexes et dynamiques tel que le gang schedulingavec concentration des tˆaches n´ecessitent que leur support d’ex´ecution mettent `a disposition des m´ecanismes permettant de capturer l’´etat d’une tˆache sur disque ou en m´emoire, de la migrer sur un autre hˆote ou de modifier dynamiquement la taille de sa partition.

Historiquement, le support d’ex´ecution est un syst`eme d’exploitation embarquant chaque composant d’une tˆache dans un processus. La pagination et la segmentation de la m´emoire ainsi que les niveaux de privil`ege des instructions processeurs fournissent une protection suffisante. Cependant, de par sa concep- tion, ce support implique que l’environnement d’ex´ecution de la machine puisse ex´ecuter l’application. Celle-ci peut cependant avoir ´et´e d´evelopp´ee pour un syst`eme incompatible avec l’environnement de la machine (architecture mat´erielle, syst`eme d’exploitation, . . .). De plus, une application embarqu´ee dans un processus est li´ee `a des objets tiers comme des biblioth`eques, des descripteurs de fichier ou des connexions r´eseau qu’il est difficile de manipuler directement.

Contrairement aux syst`emes d’exploitation bas´es sur le partage contrˆol´e des ressources, la virtualisa- tion syst`eme repose sur l’isolation. La virtualisation est apparue dans les ann´ees 60 comme une solution permettant `a plusieurs d´eveloppeurs de travailler simultan´ement sur une mˆeme machine en isolant chaque personne sur sa propre instance qui reprend trait pour trait le fonctionnement de la machine physique. Ainsi une erreur de manipulation dans une instance ne pourra pas compromettre les autres instances. Avec l’arriv´ee de machines personnelles `a faible coˆut, l’int´erˆet de la virtualisation a baiss´e. Cette infra- structure a cependant retrouv´ee un int´erˆet au d´ebut des ann´ees 2000 afin de concentrer des applications

peu gourmandes en ressources et s’ex´ecutant sur diff´erents syst`emes sur un nombre limit´e de machines afin de r´eduire les coˆuts de fonctionnement et d’entretien des machines.

Nous dressons dans ce chapitre un ´etat de l’art concernant les machines virtuelles et plus sp´ecialement les machines virtuelles syst`eme. Apr`es une br`eve description de la protection dans les syst`emes d’exploi- tation, nous d´ecrivons les concepts de la virtualisation applicative puis les concepts de la virtualisation syst`eme tel qu’ils ont ´et´e d´efinis par Popek et Goldberg [PG74]. Nous pr´esentons ensuite les diff´erentes approches de la virtualisation syst`eme : la virtualisation pure logicielle ou assist´e par le mat´eriel, la para-virtualisation utilisant des syst`emes d’exploitation pr´epar´es et enfin la virtualisation des syst`emes d’exploitation. Nous d´ecrivons enfin les m´ecanismes de capture d’´etat et de migration pour les machines virtuelles.

3.1

Protection dans les syst`emes d’exploitation

Un des principes de base fournis par les syst`emes d’exploitation est la protection. Cela consiste en un en- semble de m´ecanismes empˆechant entre autre qu’une faute dans un programme ne puisse mettre d’autres programmes en faute. Les premiers syst`emes ne proposaient pas de m´ecanismes pour limiter les espaces d’adressage par exemple et manipuler un pointeur sur sur une zone m´emoire non-allou´ee dans une ap- plication pouvait faire ´echouer une autre application voir mˆeme le syst`eme entier. La protection de la m´emoire est r´ealis´ee en partie par la segmentation [SS75] et la pagination. Ces approches bornent les plages m´emoire accessibles `a un processus afin d’empˆecher les applications de manipuler la m´emoire dont elles ne sont pas propri´etaires. La protection est ´egalement pr´esente au niveau des processeurs en limitant les instructions utilisables par une application. Chaque processeur met `a la disposition des d´eveloppeurs du syst`eme d’exploitation un jeu d’instructions appel´e ISA. Certaines de ces instructions sont privil´egi´ees et ne doivent ˆetre ex´ecutables que par le syst`eme d’exploitation. Elles manipulent entre autre l’´etat du processeur et de la m´emoire et une mauvaise utilisation de celles-ci peut compromettre le syst`eme. En 1972, le syst`eme Multics [SS72] propose d’une architecture disposant de huit niveaux de privil`eges pour l’ex´ecution des instructions processeur. Au niveau le plus bas, le mode superviseur, un noyau disposant de tous les privil`eges ex´ecute du code suppos´e sˆur assurant les tˆaches les plus sensibles du syst`eme d’ex- ploitation comme la gestion de la m´emoire ou la communication avec les p´eriph´eriques. Dans les niveaux plus ´elev´es, tel que le niveau correspondant au mode moniteur, le code n’est pas consid´er´e comme sˆur et les applications disposent de privil`eges r´eduits. Elles peuvent cependant utiliser la m´emoire et les p´eri- ph´eriques par le biais d’interfaces communiquant avec le noyau. Si une erreur se produit dans le mode moniteur, le fonctionnement de la machine n’est pas compromis et si une application souhaite ex´ecuter des instructions r´eserv´ees au mode superviseur, une exception li´ee `a la s´ecurit´e est lev´ee.

La plupart des syst`emes actuels (UNIX, GNU/Linux, Windows) d´erivent de Multics. Aujourd’hui les processeurs de type x86 proposent en mode prot´eg´e quatre niveaux d’ex´ecution. Sous le noyau GNU/Li- nux, 2 niveaux sont r´eellement utilis´es. Le niveau 0 (le mode superviseur) r´eserv´e au noyau et pouvant ex´ecuter directement n’importe quelle instruction de l’ISA et le niveau 3 (mode moniteur) pour les applications des utilisateurs (voir Figure 3.1) et ne pouvant ex´ecuter directement que des instructions non-privil´egi´ees.