ESXi combina l'approccio di posizionamento iniziale tradizionale con un algoritmo di ribilanciamento dinamico. A intervalli regolari (ogni due secondi per impostazione predefinita), il sistema esamina i carichi dei vari nodi e determina se ribilanciare il carico spostando una macchina virtuale da un nodo a un altro.
Questo calcolo tiene conto delle impostazioni delle risorse per le macchine virtuali e dei pool di risorse per migliorare le prestazioni senza violare la correttezza o i permessi per le risorse.
Lo strumento di ribilanciamento seleziona una macchina virtuale appropriata e sostituisce il nodo principale di tale macchina con il nodo con meno carico. Quando può, lo strumento di ribilanciamento sposta una macchina virtuale che ha già una parte di memoria nel nodo di destinazione. Da quel momento in poi (a meno che non venga spostata di nuovo), la macchina virtuale alloca la memoria nel nuovo nodo principale e funziona solo sui processori all'interno del nuovo nodo principale.
Il ribilanciamento è una soluzione efficace per mantenere la correttezza e garantire l'utilizzo completo di tutti i nodi. Lo strumento di ribilanciamento potrebbe dover spostare una macchina virtuale in un nodo in cui la memoria allocata è scarsa o nulla. In questo caso, nella macchina virtuale si verifica un peggioramento delle prestazioni associato a un numero elevato di accessi alla memoria remota. ESXi può eliminare questo problema eseguendo la migrazione trasparente della memoria dal nodo originale al nuovo nodo principale della macchina virtuale:
- Il sistema seleziona una pagina (4 KB di memoria contigua) nel nodo originale e ne copia i dati in una pagina nel nodo di destinazione.
- Il sistema utilizza il livello monitor della macchina virtuale e l'hardware per la gestione della memoria del processore per rimappare semplicemente la visualizzazione della memoria della macchina virtuale, in modo che utilizzi la pagina neul nodo di destinazione per tutti gli ulteriori riferimenti, eliminando il problema di accesso alla memoria remota.
Quando una macchina virtuale viene spostata in un nuovo nodo, l'host ESXi inizia immediatamente a eseguire la migrazione della propria memoria in questo modo. Gestisce la velocità per evitare il sovraccarico del sistema, soprattutto quando nella macchina virtuale è rimasta poca memoria remota o quando nel nodo di destinazione la memoria libera disponibile è insufficiente. L'algoritmo di migrazione della memoria garantisce inoltre che l'host ESXi non sposti la memoria senza motivo nel caso in cui una macchina virtuale venga spostata in un nuovo nodo solo per un breve periodo di tempo.
Quando il posizionamento iniziale, il ribilanciamento dinamico e la migrazione della memoria intelligente funzionano insieme, assicurano prestazioni di memoria ottimali nei sistemi NUMA, anche in presenza di carichi di lavoro variabili. Quando si verifica un cambiamento importante del carico di lavoro, ad esempio durante l'avvio di nuove macchine virtuali, è necessario un po' di tempo per la modifica del sistema tramite la migrazione di macchine virtuali e memoria in nuove posizioni. Dopo un breve periodo, in genere secondi o minuti, il sistema completa le operazioni di regolazione e raggiunge uno stato stabile.