La mémoire dynamique (RAM) pour les VM
Sommaire
I. Présentation
Dans ce chapitre, nous allons explorer le concept de la mémoire dynamique ou RAM dynamique dans Hyper-V et sa configuration sur les machines virtuelles (VM).
Avant de parler de la configuration en elle-même, nous allons aborder la notion de mémoire dynamique en elle-même, nous mettrons en pratique cette notion en effectuant la configuration d'une VM.
II. Qu'est-ce que la mémoire dynamique ?
Par défaut, une machine virtuelle bénéficie d'une quantité de RAM fixe. Donc, si une VM a 4 Go de RAM, quand elle démarre, les 4 Go de RAM lui sont alloués et réservés, et elle pourra les consommer en fonction de sa charge. Elle ne pourra pas consommer plus de 4 Go de RAM, même s'il y a un pic de charge car l'allocation de la RAM est statique.
La mémoire dynamique, quant à elle, est une fonctionnalité qui permet à Hyper-V de gérer automatiquement (et de façon dynamique) la quantité de RAM allouée à une VM. Une quantité de RAM minimale est allouée à la VM dès son démarrage, et ensuite Hyper-V va ajuster la RAM de la VM en fonction des besoins pendant son fonctionnement (tout en respectant une limite fixée par l'administrateur). L’ajout dynamique est en fait un ajout à chaud de mémoire vive sur la machine virtuelle.
Par exemple, si une VM nécessite plus de RAM pour exécuter une application gourmande en ressources, Hyper-V peut augmenter la quantité de RAM allouée. De même, si la demande en mémoire diminue, Hyper-V peut "réduire la RAM" allouée pour libérer des ressources pour d'autres VMs ou applications. Nous verrons qu'il y a un processus bien précis pour cela.
Enfin, sachez que la fonction de mémoire dynamique d'Hyper-V nécessite une collaboration entre l'hyperviseur en lui-même et le système d'exploitation invité de la VM. En effet, un pilote présent dans la VM est utilisé pour permettre à la VM de dialoguer avec l'Hyper-V au sujet de l'affectation de RAM.
Remarque : la mémoire dynamique est une fonctionnalité disponible à partir d'Hyper-V 3.0, une version disponible depuis Windows Server 2012. De plus, Hyper-V intègre cette fonctionnalité également dans Windows Server 2008 R2 avec le Service Pack 1.
III. Configuration de la mémoire dynamique dans Hyper-V
A. Configurer une VM
Pour configurer la mémoire dynamique dans Hyper-V, nous devons accéder aux paramètres de la VM : cette configuration s'effectue par VM, de façon indépendante.
Tout d'abord, ouvrez le "Gestionnaire Hyper-V" et sélectionnez la VM pour laquelle vous souhaitez activer la mémoire dynamique. Effectuez un clic droit sur la VM afin de cliquer sur "Paramètres...".
Dans la section "Mémoire" située sur la gauche (1), cochez l'option "Activer la mémoire dynamique" (2).
Cette fonctionnalité est associée à d'autres paramètres :
- RAM minimale (3) : minimum de mémoire qui doit être toujours rendu disponible pour cette VM, la mémoire de la VM ne descendra pas sous cette valeur. Lorsque la VM va démarrer, elle disposera de cette quantité de mémoire RAM.
- RAM maximale (3) : maximum de mémoire qui peut être affecté à la VM, la machine ne pourra pas disposer de plus de mémoire vive que la valeur que vous indiquez ici.
- Mémoire tampon (4) : c'est une portion de RAM réservée qui permet de gérer les pics temporaires de demande de mémoire par une VM. L'idéal étant de laisser Hyper-V gérer ce paramètre.
- Poids de la mémoire (5) : permet de gérer la priorité de disponibilité de la mémoire d’une machine virtuelle par rapport à une autre. Ainsi, plus la priorité est haute, plus Hyper-V fera en sorte de prioriser l’allocation de mémoire pour cette machine virtuelle plutôt que pour une autre dont la priorité sera plus basse. Il est intéressant de prioriser les machines virtuelles critiques et qui ont des besoins importants en termes de mémoire.
Dans cet exemple, la machine virtuelle "VM-WS-2022-01" va bénéficier d'une RAM minimale de 1 Go et une RAM maximale de 4 Go. Donc, si la demande en mémoire augmente dans la VM, Hyper-V pourra lui allouer jusqu'à 4 Go, et si la demande diminue, Hyper-V va réduire l'allocation de mémoire de façon dynamique.
B. La mémoire dynamique dans la VM
Nous allons lancer la machine virtuelle pour voir comment elle se comporte vis-à-vis de la RAM dynamique. Dans la VM, si nous consultons le "Gestionnaire des tâches", nous pouvons voir que la VM croit qu'elle dispose de 1 Go de RAM (1023 Mo, pour être précis). Néanmoins, il est bien précisé qu'elle peut disposer de 4 Go de RAM au maximum.
À ce moment précis, la VM s'efforce de fonctionner comme si elle avait seulement 1 Go de RAM. Ce qui ne l'empêche pas de demander plus de RAM à Hyper-V pour répondre à ses besoins. Autrement dit, le système d'exploitation invité, en l'occurrence ici Windows Server 2022, va avertir l’hyperviseur qu’il a besoin de mémoire supplémentaire par l’intermédiaire du pilote de mémoire dynamique : DMVSC (Dynamic Memory VSC).
Remarque : ceci implique une prise en charge de ce pilote par l'OS invité, que ce soit Windows ou Linux, si l'on souhaite utiliser la fonction de RAM dynamique.
Hyper-V va pouvoir lui affecter de la RAM car la VM a le droit à 4 Go de RAM maximum, mais également parce que l'hôte physique a encore de la RAM disponible. L'image ci-dessous montre bien que la RAM est passée à 2 Go et que la VM en consomme 1,7 Go.
Du côté du "Gestionnaire Hyper-V", en cliquant sur cette VM, nous pouvons voir des statistiques sur la RAM dynamique. Parfois, il peut y avoir un écart entre les données dans la VM et celles présentées dans la console Hyper-V, notamment lorsque l'hyperviseur décide de diminuer la RAM allouée à une VM.
En effet, il est assez facile pour Hyper-V d'ajouter de la RAM au système à chaud, mais ce n'est pas le cas pour diminuer la RAM. Ceci risque de ne pas plaire à l'OS invité et de le faire planter... Pour contrer ce problème, Hyper-V fait croire au système d’exploitation de la VM que la mémoire est indisponible, comme ça la VM n’utilise plus cette partie de mémoire. De son côté, Hyper-V peut réaffecter la RAM à une autre VM. On appelle cela de la « Memory Ballooning » c’est-à-dire de la mémoire gonflée.
Enfin, gardez à l'esprit une chose importante : c'est Hyper-V qui décide et qui a le dernier mot. Les valeurs présentées par Hyper-V sont correctes. De plus, Hyper-V ne pourra pas allouer plus de RAM qu'il en dispose d'un point de vue du matériel, donc soyez vigilant avec l'utilisation de la RAM dynamique. Si les seuils de RAM maximales sont trop élevés pour vos VM, cela risque de saturer l'hyperviseur et de pénaliser les performances des VMs s'il y a une forte demande en RAM de plusieurs VM simultanément.
Mon conseil : effectuez des essais et ajustez progressivement la configuration, en veillant aux performances des VM. Ce n'est pas une fonction magique et elle ne doit pas être mise en place pour "surutiliser" la RAM de l'hôte Hyper-V, plutôt pour optimiser son utilisation globale. De plus, l'utilisation de la RAM dynamique n'est pas recommandée pour certains serveurs ou certaines applications (Microsoft Exchange par exemple).
IV. Conclusion
Maintenant que vous savez configurer la mémoire dynamique, ainsi que le CPU virtuel suite à la lecture précédent chapitre, nous allons nous intéresser à l'ajout d'un disque virtuel sur une VM Windows.