內存緩衝區爲虛擬機提供比實際需求更多的內存空間。虛擬機的內存緩衝區不以MB計算,而Hyper-V嘗試保留爲高於當時提交內存的額外值的內存百分比。默認設置20%,如圖1所示。
內存緩存區是Hyper-V虛擬內存的基本設置,爲每臺虛擬機保留額外空間。
當內存需求在某個一兩秒間隔內突然增大時,可以使用保留區域。
在沒有緩存的情況下,這一兩秒內突然增大的內存需求,會迫使虛擬機進入內存溢出狀態,該狀態下自動將內存頁面文件寫入磁盤,數據從高速運行的內存空間中轉移到相對而言極慢的磁盤上,會導致計算性能的明顯降低。
當內存需求發生改變時,額外保留的空間可以降低虛擬機把內存數據寫入磁盤的概率。同時,更大的緩存空間也帶來了浪費。
保留的內存區域總是處於可用狀態,因此在虛擬機用到它之前都是閒置的。從設置看,用戶靈活性很大,該比率可以是5%到95%之間的任意數字。
比較好的方式是,開始的時候設置的小一點。因爲,當發現虛擬機總是發生寫入磁盤的情況時,可以隨時對比率進行調整。
圖1
內存計算Hyper-V動態內存功能,通過調用內存壓力來計算並確定出虛擬機所需要使用的內存大小值。
Hyper-V動態內存增長採用內存熱插拔算法,而內存縮減採用的則是冒泡算法。
若要執行這一運算過程,Hyper-V需要知道虛擬機中所運行的來賓操作系統所提交的總內存大小,以作爲虛擬機所需內存大小計算比例的壓力。
Hyper-V會分配給虛擬機管理員設置的一個起始內存值,再附加一個緩衝區作爲動態附加內存。
虛擬機系統通常使用此額外的附加內存作爲其系統文件緩存以增強操作系統和應用程序的性能。
微軟制定的緩衝區百分比範圍爲5%至95%,默認值爲20%。如圖2所示。
圖2
計算公式虛擬機可用內存計算公式:
虛擬機可用內存=啓動內存+啓動內存*(緩衝區百分比/(1-緩衝區百分比))
計算實例管理員爲某虛擬機設置內存大小爲1200MB,緩衝區百分比爲20%,則Hyper-V會附加額外的20%/(100%-20%) x 1200 MB = 300 MB內存,即總共1500MB內存給虛擬機。
如果此例中的緩衝區百分比設置爲80%,則Hyper-V會附加額外的80%/(100%-80%) x 1200 MB = 4800 MB內存,即總共6000MB內存給虛擬機。