[Virtualization]ESXi體系結構與記憶體管理(二)控制記憶體分配
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 |
相關文章
- [Virtualization]ESXi體系結構與記憶體管理(三)控制記憶體分配記憶體
- [Virtualization]ESXi體系結構與記憶體管理(一)體系結構記憶體
- oracle記憶體結構與管理Oracle記憶體
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- C語言-記憶體管理之一[記憶體分配]C語言記憶體
- 垃圾收集器與記憶體分配策略_記憶體分配策略記憶體
- MySQL記憶體管理,記憶體分配器和作業系統MySql記憶體作業系統
- Oracle記憶體體系結構Oracle記憶體
- 記憶體的分配與釋放,記憶體洩漏記憶體
- Go:記憶體管理與記憶體清理Go記憶體
- oracle 記憶體結構(二)Oracle記憶體
- 控制C++的記憶體分配C++記憶體
- JVM 記憶體模型 記憶體分配,JVM鎖JVM記憶體模型
- 記憶體管理 記憶體管理概述記憶體
- Oracle體系結構之-記憶體結構Oracle記憶體
- STM32記憶體結構介紹和FreeRTOS記憶體分配技巧記憶體
- JavaScript記憶體分配JavaScript記憶體
- JVM記憶體分配JVM記憶體
- java記憶體分配Java記憶體
- 記憶體結構記憶體
- 垃圾回收與記憶體分配——總結篇記憶體
- 記憶體管理篇——實體記憶體的管理記憶體
- Python如何管理記憶體?記憶體分配機制是什麼?Python記憶體
- C語言-記憶體管理之二[記憶體指令]C語言記憶體
- MySQL整體架構與記憶體結構MySql架構記憶體
- 【記憶體管理】記憶體佈局記憶體
- 自動共享記憶體管理 自動記憶體管理 手工記憶體管理記憶體
- 物件的建立與記憶體分配物件記憶體
- JVM GC 與 記憶體分配策略JVMGC記憶體
- Oracle記憶體分配與調整Oracle記憶體
- Oracle記憶體分配與使用(zt)Oracle記憶體
- 結構體記憶體對齊結構體記憶體
- 記憶體_管理總結記憶體
- “瑜珈山夜話” ----記憶體分配(二) (轉)記憶體
- jvm系列(二):JVM記憶體結構JVM記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- 探索iOS記憶體分配iOS記憶體
- Java 記憶體分配策略Java記憶體