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

gaearrow發表於2017-06-23

2 控制記憶體分配

在ESXi上,VMkernel管理所有的計算機記憶體,記憶體中的一部分由VMkernel消耗用以執行自身程式碼及儲存資料,剩餘的部分供虛擬機器及其虛擬機器監控程式(VMX)使用。如所有物理資源一樣,記憶體是有限資源。管理員藉助預留、限制和共享三種機制可以更精細地控制ESXi分配記憶體。三種機制vSphere客戶端設定介面如圖 2所示。(本節主要參考自文獻[2] 11.2.2控制記憶體分配)

這裡寫圖片描述

圖 2 vSphere客戶端的記憶體控制介面

2.1 記憶體預留技術

預留(Reservation)技術確保虛擬機器至少分配預留值相應的真實實體記憶體。虛擬機器啟動的必備條件是ESXi主機具有預留值相應的可用實體記憶體,若記憶體不足,虛擬機器啟動將被拒絕。虛擬機器啟動後,主機會根據實際使用情況分配記憶體,預留值以下的記憶體將無條件分配,低於預留值部分的記憶體用後主機也不會將其收回。預留技術雖然確保了虛擬機器具有一定容量的可用記憶體,但是預留的記憶體一旦分配,主機就無法再回收利用,降低記憶體使用效率,減少同時可執行的虛擬機器數量。

2.2 記憶體限制技術

限制(Limit)技術控制虛擬機器分配的真實實體記憶體低於限制值。實施限制時,任何虛擬機器作業系統都無法意識到自身受到了限制,系統不僅始終認為自己擁有配置的記憶體容量,還會按照該容量繼續進行使用。通常情況下,當需要降低ESXi主機上的實體記憶體使用率並且可以接受負面效能影響時,限制技術只是一種臨時性措施。

2.3 記憶體共享技術

共享(Shares)技術為虛擬機器請求記憶體建立優先順序,共享值通常指定為高、正常或低,分別按照4:2:1的比例分配記憶體值,還可以選擇自定義為各虛擬機器分配特定的份額。虛擬機器請求的記憶體應該大於其預留值,小於限制值。只有當虛擬機器正在請求的記憶體超出ESXi主機能夠提供的最大容量時,共享技術才會起作用。假設虛擬機器A和B的共享值分別為1000MB、2000MB,A和B其它配置均相同且ESXi不能使用其它記憶體管理技術回收記憶體。當虛擬機器A和B同時請求記憶體超過主機所能提供的最大值時,虛擬機器A每分配1個記憶體頁面,虛擬機器B將分配2個記憶體頁面。

2.4 記憶體開銷

ESXi主機在執行管理虛擬機器的過程中,除了分配給虛擬機器使用的記憶體外,還會引起兩種記憶體開銷:一是執行VMkernel系統及其上各種守護程式所消耗的記憶體;二是為每個虛擬機器執行各自的虛擬機器監控程式(VMM)所消耗的記憶體,該記憶體會隨著虛擬機器配置的記憶體和CPU數量增加而提高,具體情況如表 1所示。

表 1 虛擬機器上的示例開銷記憶體

記憶體 1 vcpu 2 vcpus 4 vcpus 8 vcpus
256 20.29 24.28 32.23 48.16
1024 25.90 29.91 37.86 53.82
1024 48.64 52.72 60.67 76.78
1024 139.62 143.98 151.93 168.60

相關文章