談談Dynamic Memory

Dynamic Memory 是微軟 Windows Server 2008 R2 SP1以後的新特性(Feature),是一項關於Hyper-V虛擬化的功能性改進。

熟悉虛擬化的朋友都知道,在VM的虛擬王國裏,最被大家翹手稱讚的就是大名鼎鼎的Memory Overcommit技術,中文名爲“內存過量使用”。這項技術允許用戶分配給虛擬機的內存空間大於宿主機的內存容量。這樣的好處在於虛擬機可以在需要使用內存的時候向宿主機提交申請,在閒暇運行的時候不佔用過多的內存;當內存不夠時,超出的內存數據存放在硬盤內讀寫。

在過去的微軟Hyper-V虛擬化解決方案中,Hyper-V的內存管理還是固定分配的方式,宿主機實際擁有多少內存,虛擬機就最大隻能分配宿主機內存的最大值,而且這個值還要保留宿主機運行的內存。並且當虛擬機開啓後,內存就開始佔用,其他虛擬機如果要啓動,所需的內存必須>=宿主機的內存-當前運行的虛擬機的內存。這是相當不合理的。很多時候,虛擬機啓動也許需要1G的內存,但是啓動以後,有512M被浪費了。

爲了解決這樣的問題,微軟的Dynamic Memory (動態內存)技術應運而生了。使用Dynamic Memory  ,我們可以爲虛擬機分配Startup RAM(啓動內存)、Maximum RAM(最大內存)、Memory buffer(內存緩衝)、Memory weight(內存權重),動態的給虛擬機分配內存,合理分配宿主機內存,節省內存資源。下面爲您解釋一下這四個指標。

Startup RAM是指虛擬機開機需要佔用的內存。您設置這個值的時候,通常不需要考慮虛擬機的運行內存,只需要滿足系統開啓的最低內存需求即可。這通常來的很小。
Startup RAM參考數值:
Windows Server 2008 R2 Enterprise Edition--512MB
Windows Server 2008 R2 Datacenter Edition--512MB
Windows 7 Ultimate Edition--512MB
Windows 7 Enterprise Edition--512MB
Windows Server 2008 Enterprise Edition--512MB
Windows Server 2008 Datacenter Edition--512MB
Windows Vista Ultimate Edition--512MB
Windows Vista Enterprise Edition--512MB
Windows Server 2003 R2 Enterprise Edition--128MB
Windows Server 2003 R2 Datacenter Edition--128MB
Windows Server 2003 Enterprise Edition--128MB
Windows Server 2003 Datacenter Edition--128MB


Maximum RAM是指虛擬機在運行的過程中最大佔用的宿主機內存。您可以分配相當數量的內存給虛擬機。但是要注意,當您分配的內存大於宿主機的內存時,虛擬機最大能使用宿主機的內存上限。例如宿主機32G,虛擬機設定Maximum RAM爲64G,那麼虛擬機最大使用的內存仍爲32G。這點需要注意。


Memory buffer,這是一個比較有意思的指標,它以百分比爲參數。Memory buffer是用來實現當虛擬機的內存請求超過Maximum RAM時,宿主機分配內存的原則的。當虛擬機不夠用時,宿主機會分配Maximum RAM*Memory buffer數量的內存給虛擬機。eg,當虛擬機Maximum RAM爲1000M,Memory buffer爲20%,如果虛擬機的內存用滿後,虛擬機將得到額外的200M空間,也就是說,虛擬機有1200M內存空間。這個機制很棒吧?

Memory weight,它的優先級決定了當虛擬機內存不夠時,宿主機分配給虛擬機內存的優先級。它使用拖杆來調整。

當然說了那麼多指標,您還需要注意,Dynamic Memory 目前並不支持所有的虛擬機,它支持的操作系統包括 Windows Server 2008 R2 Standard and Web editions 、Windows Server 2008 R2 Enterprise and Datacenter editions、Windows 7 Ultimate and Enterprise editions(32-bit and 64bit)、Windows Server 2008 with SP2 Standard and Web editions (32-bit and 64bit)、Windows Server 2008 with SP2 Enterprise and Datacenter(32-bit and 64bit)、Windows Vista Ultimate and Enterprise editions(32-bit and 64bit)、Windows Server 2003 R2 with SP2 Standard,Web,Enterprise,and DataCenter editions(32-bit and 64bit)。

Dynamic Memory 不支持XP、Linux、Unix,這點需要注意。

說完了技術環節,您一定想知道Dynamic Memory 是如何實現的了吧?這很簡單。

1、安裝支持Dynamic Memory 技術系統的虛擬機

2、升級/安裝虛擬機集成服務至SP1版本(插入集成服務光盤)
(集成服務是虛擬機的中間件之一,安裝它能夠實現宿主機和虛擬機之間更好的協調,包括共享網絡、共享多媒體、鼠標焦點漫遊、系統時鐘同步等功能)

就那麼簡單兩步,您就擁有了Dynamic Memory 特性了。

當完成後,請到虛擬機的配置中完成四項指標的配置。

 

您將能夠在Hyper-V的管理Console上看到虛擬機實際使用的內存。

至此,您已經瞭解到Dynamic Memory 的基本概念和配置了。不過筆者在這裏有個問題。當虛擬機是Linux的時候,仍舊可以設置Dynamic Memory 的特性參數,這時候虛擬機是如何處理的呢?如果您知道這方面的技術,歡迎回複本貼和我討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章