許多早期接觸Hyper-v的朋友都知道在Windows Server 2008 R2 SP1之前的Hyper-V版本中,管理者隻能固定虛拟機所使用的實體内的存大小,當虛拟機啟動時會和實體計算機啟動一樣,自動的将管理者配置設定的記憶體完全占用。這樣可能會出現以下2個問題:
1、因為Hyper-V不支援記憶體熱插拔(即開機增加記憶體),是以當管理者發現配置設定給虛拟機的記憶體無法滿足虛拟機目前的需求時,管理者需要在關閉虛拟機的情況下,對其記憶體占用大小重新進行調整。
2、當管理者為虛拟機配置設定的記憶體過多時,虛拟機上所運作的應用在不需要使用這麼多記憶體的情況下,将造成記憶體資源的浪費。
可能是微軟考慮到上述兩個問題是以在Windows Server 2008 R2 SP1及其以後版本的 Hyper-V中新增了動态記憶體功能,此功能将解決遇到的記憶體應用瓶頸問題。
記憶體過量使用
記憶體過量使用,允許虛拟機使用比主控端記憶體更多的記憶體。例如:主控端有8GB記憶體,就可以在其上運作9台擁有1GB記憶體的虛拟機。記憶體能過量使用因為有比主控端更多的虛拟記憶體。是以,管理者能夠最大化實體計算機中運作的虛拟機數量,而不用理會實體記憶體的限制。
如果沒有記憶體過量使用功能,配置設定給虛拟機記憶體的數量最多隻能是和主控端相同數量的記憶體。但實際上,虛拟機通常消耗的記憶體比其需要的少,這會浪費實體記憶體空間,并限制了在伺服器上能運作的虛拟機數量。例如,一台8GB 記憶體的Hyper-V伺服器,可能在伺服器上部署三台虛拟機,每個配置設定2GB,并預留2GB給主機作業系統,雖然這台伺服器有足夠的CPU和磁盤資源來宿主更多虛拟機,但記憶體成為限制因素。記憶體緩沖區裡含有一個選項(Hyper-V Dynamic Memory)能解決這個問題。
Hyper-V不允許記憶體過量使用,例如如果配置設定4GB記憶體給Hyper-V的一台虛拟機,虛拟機實際隻使用2GB。啟動虛拟機後,Hyper-V檢查是否有4GB的實體記憶體可用。如果這樣的話,記憶體就被“鎖定”,是以隻能用于該虛拟機。如果4GB不可用,虛拟機就不能啟動,即使虛拟伺服器需要的2GB記憶體可用也不行。
Hyper-V提供“記憶體緩沖區”、“記憶體權重”以及“記憶體優先級”。Hyper-V會允許根據記憶體使用率來優化虛拟機。當出現争用記憶體的情況時,優先權高的虛拟機首先獲得其所需記憶體。因為記憶體競争會迫使虛拟機用光記憶體,如果虛拟機需要但又沒有可用的實體記憶體,那麼“Hyper-V管理器”将顯示每台虛拟機可用的記憶體及其所需記憶體,來幫助管理者在Hyper-V上更好地管理記憶體配置設定。
下面就讓我們一起來具體的了解一下“記憶體緩沖區”、“記憶體權重”以及“記憶體優先級”:
1、記憶體緩沖區運作機制:
(1) 當記憶體需求在磨某一時間間隔突然增大時,可以使用保留區域,。在沒有緩存情況下,這一時間間隔内突然增大的記憶體需求會迫使虛拟機進入記憶體溢出狀态,這一狀态下記憶體頁面檔案将被自動寫入磁盤,資料從高速運作的記憶體空間中轉移到相對極慢的磁盤上,會導緻計算性能明顯下降。
(2) 當記憶體需求發生改變時,額外保留的空間可以降低虛拟機吧記憶體資料寫入磁盤的機率。同時,更大的緩存空間也帶來了浪費。保留的記憶體區域總是處于可用狀态,是以在虛拟機用到它之前都是閑置的。使用者設定範圍很大,微軟緩沖區百分比範圍為5%至95%,管理者可以設定任意數字。一般較為建議的是,開始的時候設定較低一些,當發現虛拟機總是發生寫入磁盤的情況時對這一百分比進行調整。
2、記憶體權重:
(1)什麼是記憶體權重:Hyper-V動态記憶體技術總是不斷的平衡記憶體使用,但有時記憶體資源無法滿足所有虛拟機的需求。如果啟用過多的虛拟機,或者某台虛拟機運作某個應用程式時突然需要大量記憶體資源,當發生這種情況時,記憶體權重設定可以對虛拟機設定優先權分類。低優先級的虛拟機在高優先級虛拟機記憶體配置設定完之前無法獲得記憶體資源。
(2)記憶體權重的作用:
A:高優先級的虛拟機得到更多的記憶體;
B:低優先級的虛拟機會被優先“奪走”記憶體;
C:當啟動一台“新”虛拟機時,所給予他的記憶體來源于已經運作的虛拟機占有的記憶體,具體配置設定多少,則要看啟動虛拟機的記憶體權重的高低。
(3)記憶體計算:
A:計算公式:虛拟機可用記憶體=啟動記憶體+啟動記憶體*(緩沖區百分比/(1-緩沖區百分比));
B:執行個體:管理者建立一台虛拟機,配置設定的記憶體大小為1200MB,緩沖區百分比為20%,則Hyper-V會附加額外的20%/(1-20%)=300MB,即總共1500MB記憶體給虛拟機。如果管理者設定的緩沖區百分比為80%,則會附加額外的80%/(1-80%)*1200MB=4800MB,即總共6000MB記憶體給虛拟機。
<a href="http://s3.51cto.com/wyfs02/M00/54/7B/wKioL1SESACSN3JUAAJYx84lUMA412.jpg" target="_blank"></a>
OK上述大概就是Hyper-v中“記憶體緩沖區”、“記憶體權重”以及“記憶體優先級”的相關知識。下面就讓我們一起來看一下Hyper-v server 2012中新引入的功能----智能分頁
智能分頁Windows Server 2012/R2 中新引如的技術,通過智能分頁以獲得可靠的虛拟機重新啟動操作。雖然最低記憶體可以增加虛拟機的合并數量,但它也帶來一項挑戰。如果一台虛拟機具有比其啟動記憶體更小數量的記憶體,如果它重新啟動,則 Hyper-V 需要附加的記憶體才能重新啟動虛拟機。由于主機記憶體壓力或虛拟機狀态的原因,Hyper-V 可能并不總是有可以附加給所要啟動的虛拟機的記憶體。這可能會導緻虛拟機重新啟動失敗。“智能分頁”這項新技術的引用就彌補了最低記憶體和啟動記憶體之間的差距,使得虛拟機可以可靠地重新啟動。如果虛拟機配置了比啟動記憶體更少的最低記憶體,為了提供可靠的重新啟動操作,則 Hyper-V 會在 Windows Server 2012/R2 中使用“智能分頁”。當重新啟動虛拟機需要更多記憶體時,這種記憶體管理方法将使用磁盤資源作為附加的臨時記憶體。這種方法既有優點,也有缺點。它提供了一種可靠的方法,在沒有可用的實體記憶體時,仍可確定虛拟機正常運作。但是,它也會降低虛拟機的性能,因為磁盤通路速度比記憶體通路速度慢得多。
1、為了盡量減少“智能分頁”對虛拟機性能的影響,Hyper-V 隻在以下情況下才會使用智能分頁功能:
(1) 正在重新啟動虛拟機時;
(2) 沒有可用的實體記憶體時;
(3) 在主機上運作的其他虛拟機中沒有可回收的記憶體時;
2、“智能分頁”不能在以下情況下使用:
(1) 虛拟機正從“關閉狀态”啟動(而不是重新啟動);
(2) 需要超額認購記憶體用于運作虛拟機時;
(3) 虛拟機正在 Hyper-V 群集中執行故障轉移時
當主機記憶體被超額使用時,Hyper-V 在來賓作業系統中繼續依靠分頁操作,因為它比“智能分頁”更有效。在來賓作業系統中,分頁操作由 Windows 記憶體管理器來執行。Windows 記憶體管理器比 Hyper-V 主機掌握更多有關虛拟機内的記憶體使用資訊,這意味在選擇用于分頁的記憶體時,Windows 記憶體管理器可以提供比 Hyper-V 更好的資訊。正因如此,相比“智能分頁”它會導緻更少的系統開銷。為進一步降低“智能分頁”的影響,Hyper-V 将在完成啟動之後從虛拟機中删除記憶體。為達到此目,它會在來賓作業系統中與“動态記憶體”元件進行協調(該過程有時也被稱為氣球(ballooning)),進而使虛拟機停止使用“智能分頁”。利用這種技術,“智能分頁”的使用隻是暫時的,并且預計不會超過 10 分鐘。需要注意:
1、隻有在虛拟機需要時才會建立“智能分頁”檔案;
2、在删除附加數量的記憶體之後,系統還會删除“智能分頁”檔案;
3、直到下一次在沒有足夠實體記憶體的情況下需要重新啟動虛拟機之前,它一直不能再次使用“智能分頁”。
下圖顯示了使用 Hyper-V 智能分頁進行重新開機的虛拟機的記憶體映射情況。
<a href="http://s3.51cto.com/wyfs02/M01/54/7B/wKioL1SESACicSzgAACVnKY1LDE586.jpg" target="_blank"></a>
為了進一步降低 Hyper-V 智能分頁的影響,在虛拟機啟動完成之後,Hyper-V 會從虛拟機移除記憶體,與客戶機内的動态記憶體元件協調(這個過程有時稱為“膨脹”),是以虛拟機停止使用 Hyper-V 智能分頁。在這項技術中,Hyper-V 智能分頁的使用是臨時的,不應超過 10 分鐘。下圖顯示了 Hyper-V 在虛拟機完成啟動之後,從虛拟機移除記憶體。
<a href="http://s3.51cto.com/wyfs02/M02/54/7B/wKioL1SESACz_Z_JAAB73iQ47k4154.jpg" target="_blank"></a>
Windows Server 2012/R2開始對Hyper-V 動态記憶體的增強,有助于在增強 Hyper-V 操作可靠性的同時,實作更高的合并數量。可以不關閉虛拟機而修改虛拟機的記憶體配置。如果有空閑虛拟機或低負載虛拟機,例如在池化VDI 環境,Hyper-V 增加的動态記憶體可以用來提高合并量,并提高重新開機操作的可靠性。這可以降低客戶的成本,尤其在有許多空閑或低負載虛拟機的池化環境中更是如此。利用對動态記憶體的運作時配置修改,可以減少停機時間、提高響應需求變化的靈活性,進而帶來整體的 IT 生産力提高。利用這些新功能,還實作了響應需求變化的靈活性。
本文轉自wuyvzhang 51CTO部落格,原文連結:http://blog.51cto.com/wuyvzhang/1721880,如需轉載請自行聯系原作者