在Windows Server 2008 R2 SP1 Hyper-V中已經增加了記憶體優化功能,不過在Windows Server 8 現更名為Windows Server 2012中有了更亮眼的改變!
在Windows 2008 R2增加的動态記憶體中,允許設定動态實體記憶體共享區域,這樣可以保證在Hyper V中将實體記憶體視為共享資源,根據虛拟機的需求動态配置設定和回收可用記憶體。
不過由于虛拟機作業系統啟動時往往需要的記憶體空間大于啟動以後進入不活躍狀态所需要的記憶體,但是為了確定虛拟機再次啟動可以成功,是以這部分大于系統最小保留的“啟動所需”記憶體空間需要考慮設定為啟動記憶體保留在内,是以可能造成了一定的記憶體空間浪費。
考量虛拟化密度很多時候各廠商都在強調記憶體超量配置設定技術,例如可以通過記憶體頁共享(當然盡量使用大的記憶體頁否則計算備援記憶體頁将耗費很多時間和CPU),記憶體壓縮,記憶體釋放等技術;但是請不要忘記一個問題,就是當釋放掉的某虛拟機的非活躍記憶體用于其他虛拟機使用時,很可能會造成該實體環境的實體記憶體啟動虛拟機預留記憶體不足的啟動失敗,是以無論如何設定啟動的記憶體部分還是要浪費不必要的啟動記憶體空間;那麼有沒有更好的辦法解決呢?
<a href="http://img1.51cto.com/attachment/201205/112510356.jpg" target="_blank"></a>
Windows Server 2012中給出了很好的答案:
我們可以設定:
虛拟機所用的最大記憶體
可以線上的修改虛拟機設定動态記憶體部分設定 (動态線上記憶體修改)
設定啟動記憶體,最小記憶體和最大記憶體
在虛拟機建立時就可以激活動态記憶體功能

動态記憶體主要用到了以下一些機制:
<b>最小記憶體</b>
允許Hyper-V從虛拟機内部回收不活躍記憶體,這樣就可以大幅度增加共享實體記憶體資源,對于高密度(尤其是虛拟桌面環境)會有很大的幫助。
當然,考慮到上述啟動記憶體的一些要求和限制,一般方面為了避免啟動虛拟機失敗,另一方面又要綜合考慮充分利用實體記憶體資源提高密度,新的“智能頁排程功能”産生了。
<b>智能調頁</b>
當設定最小記憶體引起潛在的系統啟動失敗問題時,Hyper-V會自動在指定的實體磁盤上映射一個臨時的頁面緩沖區,當然考慮到磁盤的尋址時間比記憶體慢很多,是以智能調頁僅用于:
<b>虛拟機啟動</b><b></b>
<b></b>
<b>實體記憶體不足</b><b></b>
<b>沒有其他實體記憶體可以被回收使用的情況</b><b></b>
個人感覺可以适當采用一些固态盤作為臨時緩沖區,降低啟動時可能引起的一些IO響應延遲。
對于調頁這個部分需要強調一下,雖然有些廠商強調其可以利用二級調頁提高記憶體超用技術,這顯然是有前提的;對于記憶體調頁機制來說本來系統就有此功能,試想一下真要是到了實體記憶體吃緊,Hypervisor需要亂序Paging到實體硬碟的時候,你懂得:Hypervisor是不會顧及到虛拟機内部哪些實體記憶體是系統運作時需要的,這是很恐怖的“壓縮比性能響應效應”,要知道<b>DDR3-1600</b><b>記憶體的響應時間是</b><b>5ns</b><b>,高性能磁盤尋址響應時間是</b><b>8ms</b><b>左右,這是</b><b>1,6000000</b><b>倍的差别,如果不能做到智能調頁那麼最好選擇的方式還是在虛拟機内部自己系統調頁解決啊</b><b>~</b>
<b>虛拟機内部調頁</b>
考慮到上述問題,虛拟機内部的記憶體頁控制是必不可少的。
<b>記憶體空間氣球技術利用</b><b></b>
為了減少智能調頁可能産生的影響,虛拟機完成了啟動之後;Hyper-V會自動氣球回收技術講虛拟機内部的這部分臨時記憶體空間釋放。
<b>記憶體動态配置</b>
可以線上配置設定(增加減少)虛拟機的實體記憶體
本文轉自 翟老貓 51CTO部落格,原文連結:http://blog.51cto.com/3387405/968501,如需轉載請自行聯系原作者