Introduction

Les hyperviseurs que sont ESX 4 et ESXi 4 proposent (comme dans la version 3.5) une gestion avancée de la mémoire physique. Le noyau du système (désigné par VMkernel) gère l'ensemble de la mémoire disponible dont une partie lui est réservée, et une autre réservée, dans le seul cas d'ESX, au Service Console (ESXi en étant dépourvue) qui par défaut occupe environ 300 Mo (au maximum 800 Mo). Le reste de la mémoire est utilisable par les machines virtuelles moyennant pour chacune d'elle un "overhead" (espace mémoire supplémentaire utilisé par le VMkernel pour les traitements liés à la gestion de cette mémoire) qui dépend de l'espace mémoire et du nombre de vCPU qui leur sont alloués.

 

ESX(i) 4 permet une sur-allocation de la mémoire, c'est à dire qu'il est possible d'attribuer à l'ensemble des machines virtuelles sur un serveur hôte, plus de mémoire que ce dernier n'en possède réellement. Afin de gérer efficacement cette sur-allocation, et ce, même en cas de contention (quand les machines virtuelles se disputent l'accès aux ressources physiques), VMware a doté ESX(i) de 3 différents mécanismes de gestion de la mémoire : le "Transparent Memory Page Sharing", le "Balloon driver" (vmmemctl), et le "VMkernel Swap". Le premier est activé par défaut (il peut être désactivé) et fonctionne systématiquement (même sans contention). Les deux derniers n'entrent en jeu qu'en cas de contention, et le serveur ESX(i) qui doit trouver de la mémoire pour une machine virtuelle, préfère d'abord le "Balloon driver", puis le "VMkernel Swap" en dernier recours (ce dernier étant bien sûr le moins satisfaisant en termes de performances).