ESXi combine l'approche initiale traditionnelle de placement avec un algorithme de rééquilibrage dynamique. Périodiquement (toutes les deux secondes par défaut), le système examine les chargements des divers nœuds et détermine s'il rééquilibre le chargement en déplaçant une machine virtuelle d'un nœud à l'autre.

Ce calcul prend en considération les paramètres de ressource pour que des machines virtuelles et des pools de ressources améliorent des performances sans violer des droits d'équité ou de ressource.

Le rééquilibreur sélectionne une machine virtuelle appropriée et change son nœud local pour le nœud le moins chargé. Quand il peut, le rééquilibreur déplace une machine virtuelle qui a déjà une certaine mémoire située sur le nœud de destination. À partir de ce point (à moins qu'elle soit déplacée de nouveau), la machine virtuelle alloue la mémoire sur son nouveau nœud local et elle fonctionne seulement sur des processeurs dans le nouveau nœud local.

Le rééquilibrage est une solution efficace pour maintenir l'équité et s'assurer que tous les nœuds sont entièrement utilisés. Le rééquilibreur pourrait devoir déplacer une machine virtuelle à un nœud sur lequel elle a alloué peu ou pas de mémoire. Dans ce cas, la machine virtuelle encourt une pénalité de performances liée à un grand nombre d'accès mémoire distants. ESXi peut éliminer cette pénalité en faisant migrer, de manière transparente, la mémoire du nœud initial de la machine virtuelle vers son nouveau nœud local :

  1. le système sélectionne une page (4 Ko de mémoire contiguë) sur le nœud initial et copie ses données sur une page dans le nœud de destination.
  2. Le système utilise la couche du moniteur de la machine virtuelle et le matériel de gestion de la mémoire principale du processeur pour remapper en continu la vue de la machine virtuelle de la mémoire, de sorte qu'il utilise la page sur le nœud de destination pour toutes les références ultérieures, éliminant ainsi la pénalité de l'accès mémoire distant.

Quand une machine virtuelle se déplace vers un nouveau nœud, l'hôte ESXi commence immédiatement à exécuter sa mémoire de cette façon. Elle gère la cadence pour éviter de surcharger le système, en particulier quand la machine virtuelle a peu de mémoire distante restante ou quand le nœud de destination a peu de mémoire libre disponible. L'algorithme de migration de mémoire s'assure également que l'hôte ESXi ne déplace pas la mémoire inutilement si une machine virtuelle n'est déplacée vers un nouveau nœud que seulement durant une courte période.

Lorsque le placement initial, le rééquilibrage dynamique et la migration de mémoire intelligente travaillent ensemble, ils assurent de bonnes performances de mémoire sur des systèmes de NUMA, même en présence de charges de travail changeantes. Quand une modification importante de charge de travail se produit, par exemple quand de nouvelles machines virtuelles sont démarrées, le système prend du temps pour réajuster des machines virtuelles et la mémoire migrantes à de nouveaux emplacements. Après une courte période, typiquement des secondes ou des minutes, le système termine ses réajustements et atteint un état d'équilibre.