VMware vSphere 8.0 U3 釋出了一個非常有意義的功能叫記憶體分層(Memory Tiering),以利用基於 PCIe 的 NVMe 裝置充當第二層(輔助)記憶體,從而使 ESXi 主機的可用實體記憶體(RAM)增加。從本質上講,記憶體分層就是利用較便宜的 NVMe 裝置充當實體記憶體,以此增加記憶體的總容量和工作負載的可用量,同時降低總體擁有成本(TCO)。
為什麼會需要記憶體分層?會不會有很大效能瓶頸?原因有很多,比如記憶體成本,如今對於記憶體容量及效能的需求與 CPU 的需求其實是不平衡的,這可能會因記憶體原因導致許多環境出現諸多限制。對於效能的影響肯定是會有的,但是隨著技術的發展,慢慢的也會得到控制。記憶體分層對應用程式來說是完全透明的,可以用於所有不同型別的工作負載。虛擬機器管理程式負責記憶體管理,因此它知道哪些頁面是熱的,哪些頁面是冷的,也就是說,它可以確定哪些頁面用於哪個層並同時保持效能。
當前對於記憶體分層的配置,VMware 建議 NVMe 儲存容量與實體記憶體容量的分配比率為 1:4,也就是 25%。意思就是,如果實體記憶體為 100 GB,那用於記憶體分層的 NVMe 儲存建議為 25 GB,合在一起可以使用的記憶體容量為 125 GB,這樣既可以增加實體記憶體的容量,也能減少因記憶體分層所帶來的效能影響。當然這個比率只是官方推薦的也是預設的,這個值可以修改,你可以使用 1~400 的值來設定實體記憶體與 NVMe 儲存的百分比。更多內容和細節請檢視 VMware KB 95944 知識庫文章底部的記憶體分層技術指南文件。
現在,記憶體分層(Memory Tiering)技術還只是預覽版,可以在實驗室或者測試環境評估該功能,只能透過 ESXCLI 或者 PowerCLI 命令列進行配置,不過在未來的發行版本中,也許可以直接在 UI 管理介面進行應用。下面來看看具體的配置過程。
首先,ESXi 主機必須安裝 8.0 U3 及以上版本來支援記憶體分層功能,請記住這裡現在的實體記憶體“容量”。
然後,使用了一塊 Samsung 970 EVO 250 GB 的 NVMe 硬碟進行測試,請記住這裡的“路徑”以及“容量”。
1.SSH 登入到 ESXi 主機。
ssh z4g4.mulab.local
2.執行 ESXCLI 命令啟用記憶體分層功能。
esxcli system settings kernel set -s MemoryTiering -v TRUE
3.建立特定 NVMe 裝置以用於記憶體分層。
esxcli system tierdevice create -d /vmfs/devices/disks/t10.NVMe____Samsung_SSD_970_EV0_250GB_______________5C71B5815A382500
4.檢視用於記憶體分層的 NVMe 裝置。
esxcli system tierdevice list
5.配置用於記憶體分層的 NVMe 裝置與實體記憶體的百分比。
esxcli system settings advanced set -o /Mem/TierNvmePct -i 100
6.ESXi 主機記憶體分層功能配置過程。
7.完成配置後,重新啟動 ESXi 主機使配置生效,再次檢視 ESXi 主機的記憶體!當前記憶體容量=實體記憶體容量+NVMe 儲存容量。
是不是很神奇?你的下一代記憶體何必是記憶體?還不趕緊用起來?記憶體分層都來了,記憶體池化還遠嗎?!