Avec la Bêta du Service Pack 1 de Windows Server 2008 R2, une nouvelle fonctionnalité fait son apparition : Dynamic Memory. Qu’est ce donc que cela ? C’est une nouvelle fonctionnalité qui permet d’ajuster dynamiquement la mémoire vive attribuée à une machine virtuelle, et ainsi optimiser encore plus l’utilisation des ressources matérielles.

Cet article est basé sur la version beta, il se peut donc que cet article ne soit pas complètement précis avec la version finale.
Qu’est ce que Dynamic Memory ?
Jusqu’à présent, dans des machines virtuelles Hyper-V sous Windows Server 2008 et 2008 R2, l’administrateur pouvait assigner une quantité de mémoire vive fixe à une machine virtuelle. Lorsque la machine virtuelle est démarrée, cette quantité de mémoire est assignée dans la mémoire de l’hôte et n’est plus modifiée par l’hôte jusqu’à l’extinction de la machine. De cette manière, un hôte équipé de 8Go de mémoire vive pouvait avoir 10 machines virtuelles de 2 Go chacune, mais ne pouvait en démarrer que trois (le système hôte n’a pas besoin de 2 Go mais, dans notre exemple, la limite est à 3 machines).
Pour comprendre en quoi ceci est une limitation, il faut revenir au scénario le plus courant qui mêne à la virtualisation : la consolidation de serveurs. L’un des objectifs de la consolidation est de mieux partager les ressources matérielles. En virtualisant un certain nombre de serveurs, on économise le nombre et la puissance de processeurs nécessaire pour faire tourner les mêmes services, mais également le disque, que l’on utilise des disques internes, DAS ou SAN. Mais qu’en est-il de la mémoire vive ? Jusqu’à présent,c’était le dernier point qui n’était pas plus efficace que l’on soit dans un scénario de virtualisation ou pas : 2 Go de RAM sur un serveur physique nécessitera toujours 2 Go en virtualisé. Tout cela était vrai….jusqu’à présent.
La fonctionnalité Dynamic memory permet de donner deux valeurs  à la mémoire :

Comment ca fonctionne ?

"Changer la mémoire vive a chaud, c'est pas possible ! Quel système d'exploitation va prendre en charge ca ?". C'est une très bonne question ! Baguette magique ? Potion du druide ? Cela ne fonctionne que sur un os particulier entièrement managé ? Un peu des trois….

La difficulté technique vient du fait que nos systèmes d'exploitation n'ont pas été conçus pour un changement de la mémoire vive à chaud. Offrir cette possibilité nécessite donc en premier lieu de pouvoir gérer ce cas. Côté hôte, c'est l'architecture d'Hyper-V qui le permet (c'est la baguette magique). Ensuite, les choses se compliquent côté OS virtualisé, et ce pour plusieurs raisons :

La potion magique pour réussir cela, en plus de l'architecture d'Hyper-V (VSP/VCP/VMBus) ce sont les VM Additions Tools. La version incluse avec cette bêta apporte des fonctionnalités supplémentaires au kernel, permettant ces changements.

Hmm, "fonctionnalités supplémentaires au kernel" et ca fonctionne avec mon Suse Enterprise ?" Et bien non ! (du moins, pas dans cette version). Cette fonctionnalité n'est disponible que sur certains OS. Voici la liste pour cette beta (d'autres OS sont prévus pour la version finale, les versions x86 et x64 de ces OS sont supportées) :

clip_image001

Une fois la fonctionnalité activée, les composants d'intégration mis à jour, l'OS virtualisé et le système hôte vont communiquer, évaluer les besoins en mémoire et, en cas de besoin, allouer plus de mémoire à une machine virtuelle. Pour gérer les cas de pénurie, un système de priorité est prévu, vous pouvez ainsi prioriser les machines virtuelles qui se verront attribuer de la mémoire si plusieurs en ont besoin et que la quantité disponible n'est pas suffisante pour répondre à tous les besoins.

Vous pouvez a tout moment visualiser la mémoire qui a été allouée à une machine virtuelle directement dans Hyper-V Manager (comme le montre la capture ci-dessous), mais également à l'aide du compteur de performances (avec 16 nouvelles sondes réparties dans deux groupes).

clip_image002

Il y a bien d'autres notions à comprendre pour avoir une vision détaillée de Dynamic Memory (balloning, memory pressure, …) qui feront peut-être l'objet d'un prochain article ;)

Un dernier conseil avant que je me lance ?
Même plusieurs ! Voici une liste de points auxquels il faut porter attention si vous voulez tester cette nouvelle fonctionnalité :

Une autre nouveauté du SP1 est Remote FX, un ensemble de technologies permettant de supporter des une expérience multimédia de haut niveau via le protocole RDP (y compris des applications 3D). Peut-être le sujet d’un prochain article ;)