Inscrivez-vous gratuitement à la Newsletter BFM Business
La Virtualization Technology, qu'Intel s'apprête à intégrer à ses processeurs, facilitera le travail des gestionnaires de machines virtuelles. Elle introduit un nouveau mode d'exécution et optimise le partage des ressources.
Aujourd'hui, nos machines sont multitâches. Demain, elles seront multi-OS : capables de faire fonctionner simultanément plusieurs systèmes d'exploitation. Et cela, grâce aux technologies de virtualisation de systèmes de type VMware. Pour faciliter le travail des logiciels de virtualisation et résoudre certains problèmes liés à l'exécution d'OS en environnement virtuel, Intel intégrera prochainement à ses puces sa Virtualization Technology (VT). Cette évolution du jeu d'instructions vise, d'une part, à fluidifier le partage des ressources physiques entre machines virtuelles et, d'autre part, à résoudre le problème des niveaux d'exécution.
Arbitrer la cohabitation des systèmes
La virtualisation repose généralement sur l'installation d'un hyperviseur, ou gestionnaire de machines virtuelles (GMV), sur une machine physique. Ce logiciel permet de définir des environnements virtuels ?" mémoire, processeur, jeu de composants, interface vers les périphériques, etc. ?", dans lesquels installer des OS invités. L'hyperviseur agit comme un arbitre entre systèmes invités : il attribue du temps processeur et des ressources à chacun, redirige les requêtes d'entrées-sorties vers les ressources physiques, veille au confinement des invités dans leur propre espace. Ce mode de fonctionnement a un coût. L'exploitation de cinq OS au lieu d'un seul accroît la charge du processeur, et l'hyperviseur lui-même consomme des ressources. De plus, la virtualisation de systèmes pose le problème des niveaux d'exécution.Les niveaux d'exécution, ou rings, définissent les privilèges d'exécution des programmes. Plus un programme est installé sur un niveau bas, plus il exerce de contrôle sur le système. Sur architecture x86 32 bits, il existe quatre rings 0,1, 2 et 3. L'OS fonctionne sur le ring 0, il dispose du plus haut niveau de contrôle. Les applications tournent sur le ring 3, le plus élevé. Elles ne peuvent pas modifier ce qui s'exécute sur des rings inférieurs au leur. Une application ne peut pas arrêter l'OS, alors que l'OS peut arrêter une application. Les rings 1 et 2 définissent des privilèges superviseurs de moindre importance que ceux du ring 0. Ils ont été supprimés dans x86-64, car ils ne servaient plus à rien, sauf pour OS/2 et... pour la virtualisation.En effet, dans un environnement virtualisé, il n'y a plus un, mais plusieurs OS. Le premier est l'hyperviseur. Il a besoin d'un niveau de privilèges très élevé puisqu'il contrôle les ressources physiques et les invités. Mais sur les machines virtuelles créées par cet hyperviseur, sont installés d'autres OS. Comme l'hyperviseur occupe le ring 0, il faut les placer sur un ring plus élevé : 1 ou 3. Or, les OS sont conçus pour s'exécuter sur le ring 0. Ils vérifient régulièrement que c'est bien là qu'ils résident, car certaines instructions ne s'exécutent que si elles viennent du ring 0 ou y vont. De plus, fonctionner sur un ring plus bas que les applications leur garantit le contrôle de celles-ci. Pour contourner ce problème, il existe deux méthodes. La paravirtualisation (exploitée par Xen) consiste à modifier les OS invités pour leur permettre de s'exécuter ailleurs que sur le ring 0. Ce n'est pas toujours faisable, par exemple avec Windows, dont le code n'est pas modifiable. La translation binaire (de VMware) leurre l'OS invité sur la place qu'il occupe réellement sur le système en interceptant certaines de ses requêtes. Mais cela oblige l'hyperviseur à fournir plus de travail, et donc à consommer plus de ressources.Pour résoudre ce problème, la technologie VT d'Intel introduit sur les processeurs un nouveau mode d'exécution, baptisé VMX. Il comporte un niveau racine (root), correspondant à des rings inférieurs à 0, et un niveau normal, correspondant aux anciens rings de 0 à 3. L'hyperviseur fonctionne en mode VMX racine, avec le niveau de contrôle le plus élevé. Les systèmes d'exploitation invités fonctionnent sur le ring 0 du mode VMX normal. Ils occupent bien l'emplacement pour lequel ils ont été conçus. Plus besoin de modification des invités, ni de translation binaire (en fait, celle-ci reste nécessaire pour d'autres fonctions).
Une bascule assistée
L'autre apport de Virtualization Technology concerne le partage des ressources entre systèmes d'exploitation invités. Ceux-ci s'exécutent sans connaissance de la présence d'autres invités sur le système. L'hyperviseur donne à chaque invité une tranche de temps d'exécution, puis le suspend, et attribue la tranche de temps d'exécution suivante à un autre invité et ainsi de suite. Ce qui impose de sauvegarder et restaurer à chaque bascule le contexte des invités (état des registres et des caches, par exemple) : prendre une image de l'état du système, la stocker, et la remettre en activité.VT introduit de nouvelles instructions (VM Entry, VM Exit, VM Launch, VM Resume et d'autres instructions de contrôle), pour effectuer plus rapidement ces opérations. Il attribue aussi à chaque environnement virtuel une Virtual Machine Control Structure (VMCS), un segment mémoire de quelques kilo-octets pris dans l'espace d'adressage physique du système sous-jacent. Ce segment sert à stocker les données d'état les plus importantes de l'OS invité. Il est lu à chaque activation de l'environnement virtuel et écrit à chaque sortie de celui-ci. Une méthode qui devrait s'avérer beaucoup plus rapide que les procédures aujourd'hui utilisées. De plus, VT met à la disposition de l'hyperviseur une table de 32 bits comportant une série de signaux. Lorsque le processeur reçoit un événement qui correspond à un de ces signaux, il déclenche une procédure de VM Exit et repasse la main à l'hyperviseur, qui peut alors lui-même passer la main à une autre machine virtuelle. Cette méthode donne un niveau de contrôle fin à l'hyperviseur pour gérer le partage du temps processeur entre les différents OS hôtes à chaque fois qu'un état déterminé du processeur ?" un déclencheur qui indique qu'une interruption est possible ?", est atteint. Elle a aussi l'avantage d'être assez peu coûteuse en ressources, car cette structure de contrôle est gérée directement au niveau du processeur, et non pas par un code qui s'exécuterait au dessus. Les premiers processeurs exploitant VT devraient être proposés dans le courant du mois. Les solutions de virtualisation, à l'image de celles de VMware ou de Microsoft, devraient rapidement en tirer parti. Une autre vision de la gestion de la virtualisation au niveau processeur, Pacifica, est également en cours de développement chez AMD. Plus ambitieuse encore que VT, elle ne devrait toutefois pas être disponible avant l'année prochaine.
Votre opinion