ESXi kombiniert den herkömmlichen Ansatz zur anfänglichen Platzierung mit einem dynamischen Neuverteilungsalgorithmus. Das System untersucht regelmäßig (standardmäßig alle zwei Sekunden) die Lasten auf den verschiedenen Knoten und bestimmt, ob eine neue Lastverteilung durch Verschieben einer virtuellen Maschine auf einen anderen Knoten sinnvoll ist.
Bei dieser Berechnung werden die Ressourceneinstellungen der virtuellen Maschinen und Ressourcenpools berücksichtigt, damit die Leistung verbessert werden kann, ohne das Gleichgewicht zu beeinträchtigen oder Ressourcenberechtigungen zu verletzen.
Bei der Neuverteilung wird eine geeignete virtuelle Maschine gewählt, der als neuer Stammknoten der Knoten mit der geringsten Last zugewiesen wird. Soweit möglich, verschiebt das Neuverteilungsprogramm eine virtuelle Maschine, deren Arbeitsspeicher sich bereits teilweise auf dem Zielknoten befindet. Von diesem Zeitpunkt an wird der virtuellen Maschine (sofern sie nicht erneut verschoben wird) Arbeitsspeicher des neuen Stammknotens zugeteilt, und sie wird ausschließlich auf den Prozessoren dieses neuen Stammknotens ausgeführt.
Die Neuverteilung ist eine effiziente Lösung, um das Gleichgewicht zu erhalten und sicherzustellen, dass alle Knoten vollständig genutzt werden. Möglicherweise muss das Neuverteilungsprogramm eine virtuelle Maschine auf einen Knoten verschieben, auf dem ihr nur wenig oder gar kein Arbeitsspeicher zugewiesen ist. In diesem Fall führt die große Anzahl an Remotespeicherzugriffen zu einem Leistungsabfall der virtuellen Maschine. ESXi kann diesen Leistungsabfall durch das transparente Migrieren von Arbeitsspeicher aus dem ursprünglichen Knoten der virtuellen Maschinen auf den neuen Stammknoten beseitigen:
- Das System wählt eine Seite (4 KB des zusammenhängenden Arbeitsspeichers) auf dem ursprünglichen Knoten und kopiert die darauf befindlichen Daten auf eine Seite des Zielknotens.
- Das System verwendet die Überwachungsebene der virtuellen Maschine und die Arbeitsspeicher-Verwaltungshardware des Prozessors, um die Arbeitsspeicherübersicht der virtuellen Maschine nahtlos neu zuzuordnen. Diese Seite wird für künftige Referenzen auf dem Zielknoten verwendet, um so eine Beeinträchtigung durch den Remotespeicherzugriff zu vermeiden.
Sobald eine virtuelle Maschine auf einen neuen Knoten verschoben wird, wird durch ESXi umgehend eine derartige Arbeitsspeichermigration eingeleitet. ESX Server verwaltet die Frequenz, um eine Überanspruchung des Systems insbesondere dann zu vermeiden, wenn nur noch wenig Remotearbeitsspeicher für die virtuelle Maschine vorhanden ist oder der Zielknoten über wenig freien Arbeitsspeicher verfügt. Der Arbeitsspeicher-Migrationsalgorithmus stellt außerdem sicher, dass Arbeitsspeicher durch den ESXi-Host nicht unnötigerweise verschoben wird, wenn zum Beispiel eine virtuelle Maschine nur kurzzeitig auf einen neuen Knoten verschoben wird.
Wenn anfängliche Platzierung, dynamische Neuverteilung und intelligente Arbeitsspeichermigration gemeinsam zum Einsatz kommen, stellen sie auch bei variablen Arbeitslasten eine gute Arbeitsspeicherleistung auf NUMA-Systemen sicher. Bei Auftreten einer signifikanten Arbeitslaständerung, beispielsweise wenn neue virtuelle Maschinen gestartet werden, benötigt das System eine gewisse Zeit, um sich anzupassen und virtuelle Maschinen und Arbeitsspeicher an neue Standorte zu migrieren. Nach kurzer Zeit, normalerweise innerhalb weniger Sekunden oder Minuten, hat das System die Neuanpassungen abgeschlossen und befindet sich in einem stabilen Betriebszustand.