許多早期接觸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記憶體給虛擬機器。
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 智慧型分頁進行重啟的虛擬機器的記憶體對映情況。
為了進一步降低 hyper-v 智慧型分頁的影響,在虛擬機器啟動完成之後,hyper-v 會從虛擬機器移除記憶體,與客戶機內的動態記憶體元件協調(這個過程有時稱為「膨脹」),因此虛擬機器停止使用 hyper-v 智慧型分頁。在這項技術中,hyper-v 智慧型分頁的使用是臨時的,不應超過 10 分鐘。下圖顯示了 hyper-v 在虛擬機器完成啟動之後,從虛擬機器移除記憶體。
windows server 2012/r2開始對hyper-v 動態記憶體的增強,有助於在增強 hyper-v 操作可靠性的同時,實現更高的合併數量。可以不關閉虛擬機器而修改虛擬機器的記憶體配置。如果有空閒虛擬機器或低負載虛擬機器,例如在池化vdi 環境,hyper-v 增加的動態記憶體可以用來提高合併量,並提高重啟操作的可靠性。這可以降低客戶的成本,尤其在有許多空閒或低負載虛擬機器的池化環境中更是如此。利用對動態記憶體的執行時配置修改,可以減少停機時間、提高響應需求變化的敏捷性,從而帶來整體的 it 生產力提高。利用這些新功能,還實現了響應需求變化的敏捷性。
Hyper V Server記憶體技術
記憶體分配給虛擬機器之後,hyper v主機把系統可用記憶體資源分配給建立之後的虛擬機器,預設的記憶體我們稱之為靜態記憶體,即當你建立虛擬機器時你給多少g記憶體那麼虛擬機器就分配多少g記憶體,windows server 2012 r2 hyper v提供的動態記憶體功能,管理員可以重新調整資源,讓...
配置Hyper V Server 資源計量
企業管理員為了實施可同時測量已分配資源和實際使用資源的高階計費策略,早期版本的 hyper v 要求使用者開發自己的 對效能計數器進行輪詢和彙總的計費解決方案。這些解決方案的開發成本可能比較高,而且有時還會導致歷史資料的丟失。為了幫助更準確 更簡單地收費同時保護歷史資訊,從windows serve...
ios 記憶體管理,objective c記憶體管理
整理下筆記,如有不準備的地方,望指正。雖然現在蘋果已經大力推崇arc自動記憶體管理,記憶體管理已經不需要我們手動處理,作為新手,還是要了解一下。首先如果是5.x以上版本的xcode,xcode建立新project的時候預設是適用arc的,如果想自己管理記憶體 可以在edit scheme中設定obj...