ESXi emploie un programmateur NUMA sophistiqué pour équilibrer dynamiquement la charge du processeur et la localité de mémoire ou l'équilibre de la charge de processeur.

  1. Un nœud local est assigné à chaque machine virtuelle gérée par le programmateur NUMA. Un nœud local est l'un des nœuds NUMA du système contenant des processeurs et la mémoire locale, comme l'indique le Tableau d'allocation des ressources système (SRAT).

  2. Quand la mémoire est allouée à une machine virtuelle, l'hôte d'ESXi l'alloue de préférence à partir du nœud local. Les CPU virtuels de la machine virtuelle sont contraints de fonctionner sur le nœud local pour maximiser la localité de la mémoire.

  3. Le programmateur NUMA peut changer dynamiquement le nœud local d'une machine virtuelle pour répondre aux changements de la charge du système. Le programmateur pourrait migrer une machine virtuelle vers un nouveau nœud local pour réduire le déséquilibre de la charge du processeur. Ceci risquant de rendre une grande partie de sa mémoire distante, le programmateur pourrait migrer la mémoire de la machine virtuelle dynamiquement vers son nouveau nœud local pour améliorer la localité de la mémoire. Le programmateur NUMA pourrait également permuter des machines virtuelles entre les nœuds quand cela améliore la localité globale de la mémoire.

Certaines machines virtuelles ne sont pas gérées par le programmateur NUMA d'ESXi. Par exemple, si vous définissez manuellement l'affinité de processeur ou de mémoire d'une machine virtuelle, le programmateur NUMA pourrait ne pas être en mesure de gérer cette machine virtuelle. Les machines virtuelles qui ne sont pas gérées par le programmateur NUMA fonctionnent toujours correctement. Cependant, elles ne tirent aucun bénéfice des optimisations NUMA d'ESXi.

Les règles de planification NUMA et de placement de mémoire d'ESXi peuvent gérer toutes les machines virtuelles d'une manière transparente, de sorte que les administrateurs n'aient pas besoin d'adresser explicitement la complexité de l'équilibrage des machines virtuelles entre les nœuds.

Les optimisations fonctionnent en continu, indépendamment du type de système d'exploitation invité. ESXi fournit le support NUMA même aux machines virtuelles qui ne prennent pas en charge le matériel NUMA, tel que Windows NT 4.0. En conséquence, vous pouvez tirer profit du nouveau matériel même avec les systèmes d'exploitation hérités.

Une machine virtuelle qui a plus de processeurs virtuels que le nombre de noyaux de processeurs physiques disponibles sur un nœud simple de matériel peut être gérée automatiquement. Le programmateur NUMA héberge une telle machine virtuelle en étendant les nœuds NUMA. C'est-à-dire qu'il est fractionné en tant que plusieurs clients NUMA, dont chacun est assigné à un nœud, puis géré par le programmateur en tant que client normal, non-étendu. Ceci peut améliorer les performances de certaines charges de travail de mémoire intensive avec une localité élevée. Pour plus d'informations concernant la configuration du comportement de cette fonction, consultez Attributs avancés de la machine virtuelle.

ESXi 5.0 et versions ultérieures incluent la prise en charge de l'exposition de la topologie NUMA virtuelle aux systèmes d’exploitation clients. Pour plus d'informations sur le contrôle NUMA virtuel, consultez Utilisation de NUMA virtuel.