ESXi 將傳統的初始放置方法與動態重新平衡演算法合併在一起。系統會定期 (預設為每兩秒一次) 檢查各個節點的負載,並決定是否應採用將虛擬機器從一個節點移到另一個節點的方式來重新平衡負載。
此計算會考量虛擬機器和資源集區的資源設定,在不違反公平性或資源可用量的情況下提高效能。
重新平衡器會選取適當的虛擬機器,並將其主節點變更為負載最少的節點。如果可以的話,重新平衡器會移動已經有部分記憶體位於目的地節點的虛擬機器。自此以後,除非再次移動,否則虛擬機器會在新的主節點上配置記憶體,並僅在新的主節點內的處理器上執行。
重新平衡是維持公平性和確認完全使用所有節點的有效解決方案。重新平衡器可能需要將虛擬機器移到已配置少量記憶體或沒有配置記憶體的節點上。在此情況下,虛擬機器會造成與大量遠端記憶體存取相關聯的效能損失。ESXi 透過將記憶體從虛擬機器的原始節點明確地移轉到新的主節點,可以消除該效能損失:
- 系統選取原始節點上的分頁 (4 KB 連續記憶體),並將其資料複製到目的地節點中的頁面上。
- 系統使用虛擬機器監控器層和處理器的記憶體管理硬體順暢地重新對應虛擬機器的記憶體視圖,以將目的地節點上的分頁用於所有進一步參考,從而消除遠端記憶體存取所帶來的效能損失。
當虛擬機器移到新的節點時,ESXi 主機會立即開始按此方式移轉其記憶體。主機會管理移轉率,避免讓系統負載過重,特別是在虛擬機器剩餘較少遠端記憶體或目的地節點的可用記憶體很少時。如果虛擬機器只是短時期內移到新的節點,則記憶體移轉演算法還可以確保 ESXi 主機根據需要來移動記憶體。
當初始放置、動態重新平衡和智慧記憶體移轉搭配使用時,即使工作負載發生變更,它們也可確保 NUMA 系統具有良好的記憶體效能。當主要工作負載發生變更時 (例如啟動新的虛擬機器時),系統需要一些時間來重新調整,將虛擬機器和記憶體移轉到新的位置。經過很短的時間之後 (通常是幾秒或幾分鐘),系統便可以完成重新調整並達到穩定狀態。