[Virtualization]ESXi體系結構與記憶體管理(三)控制記憶體分配

gaearrow發表於2017-06-23

3 高階記憶體技術

為了更加充分地利用有限的記憶體資源,提高ESXi主機在記憶體壓力過大時的系統穩定性,ESXi引入了空閒記憶體稅(IMT)、透明頁共享(TPS)、記憶體膨脹(Ballooning)、交換(Swapping)和記憶體壓縮(Compressing)五種高階記憶體管理技術。這些技術並不是始終處於工作狀態,工作與否依賴於主機記憶體使用的狀態。圖 2展示了各技術啟用工作與記憶體使用狀態的關係,其中記憶體使用狀態定義了四個等級:High、Soft、Hard和Low。不同等級依據主機當前可用記憶體與總記憶體的比例劃分,在ESXi 5上,四個等級的預設配置分別為總記憶體的6%、4%、2%和1%。

這裡寫圖片描述
圖 2 記憶體回收

3.1 空閒記憶體稅

空閒記憶體稅(Idle Memory Tax,IMT)是為了防止虛擬機器累計閒置記憶體的技術。當虛擬機器未使用當前已分配的所有記憶體時,ESXi對閒置記憶體的消耗量大於對正在使用記憶體的消耗量,也就是說ESXi會讓空閒記憶體付出更多代價。

3.2 透明頁共享

透明頁共享(Transparent Page Sharing,TPS)技術允許同一塊記憶體頁在虛擬機器之間進行共享,以減少所需的記憶體頁總量。記憶體塊比較首先通過計算雜湊,雜湊一致再進行完整頁比較,當確定頁面完全相同時,VMX將會透明地重對映虛擬機器的記憶體頁面,以便共享相同的實體記憶體頁。通常情況下,ESXi工作在4 KB記憶體頁面上,透明頁共享會應用在所有記憶體頁面上。但是在某些具有硬體支援的特殊情況下,VMX會使用2 MB記憶體大頁面,ESXi不會共享這些大頁面。

3.3 記憶體膨脹

記憶體膨脹(Ballooning)是ESXi主機回收虛擬機器空閒記憶體的技術。膨脹技術實現需要安裝在客戶機作業系統上的記憶體虛擬增長驅動程式(vmmemctl,VMware工具的組成部分)支援。當ESXi主機執行的實體記憶體壓力過大時,VMX會控制驅動程式向客戶機作業系統請求記憶體,作業系統分配給驅動程式的記憶體最終將通過VMX提供給其它虛擬機器使用;當ESXi主機的記憶體壓力緩解時,驅動程式就會釋放記憶體,把記憶體返還給客戶機作業系統。由於其工作過程與氣球相似,記憶體虛擬增長驅動程式在某些文獻中也被稱為“氣球驅動程式”。

3.4 交換

交換(Swapping)也是ESXi主機回收虛擬機器空閒記憶體的技術。這裡介紹的交換技術不同於客戶機作業系統上的常規交換,而是特指ESXi主機上利用交換檔案(*.vswp)實現的交換。通常情況,只有當vmmemctl驅動程式不可用或未響應時,ESXi主機才會使用交換技術從虛擬機器中強制回收記憶體。由於交換不考慮客戶機作業系統是否使用這些頁面,且磁碟比記憶體的響應時間慢上千倍,因此採用交換技術將顯著影響客戶機作業系統的效能。

3.5 記憶體壓縮

記憶體壓縮(Memory Compression)可在ESXi主機使用交換技術時,減少必須交換到磁碟的頁面數量,從而改進虛擬機器效能。當需要交換頁面時,ESXi會首先嚐試壓縮虛擬頁面,將壓縮至2 KB甚至更小的頁面儲存在虛擬機器的壓縮快取中。由於訪問壓縮快取比訪問交換檔案更快,因此利用記憶體壓縮技術,不會顯著影響虛擬機器效能。

4 小 結

虛擬化技術的顯著優點就是能夠根據虛擬機器的實際效能需求動態分配資源。為了充分利用資源、解決資源壓力過大時的主機穩定性和虛擬機器競爭問題,ESXi提供了一整套記憶體分配控制和高階記憶體管理技術。讀者若想進一步瞭解文中介紹的內容,強烈建議查閱VMware官方文件。

5 參考文獻

[1] Charu Chaubal.The Architecture of VMware ESXi.20081024 WP-030-PRD-02-03.VMware,2007
[2] Forbes Guthrie and Scott Lowe. VMware vSphere Design 2nd Edition.SYBEX,2013
[3] Scott Lowe等著.趙俐,曾少寧譯.精通VMware vSphere 5.5[M].北京:人民郵電出版社,2015
[4] vSphere資源管理 ESXi 5.5 U2.ZH_CN-001584-00.VMware,2014

相關文章