天天看點

【虛拟化實戰】VM設計之二記憶體機制

作者:範軍 (Frank Fan) 新浪微網誌:@frankfan7

虛拟機需要配置多大的記憶體合适?怎樣才能最佳利用主機的實體記憶體?怎麼把握Over-Commitment的度?本文從概念到實戰來闡述如何做好虛拟機上記憶體資源規劃。

首先我們明确一些概念。

<a href="http://blog.51cto.com/attachment/201311/091245469.png" target="_blank"></a>

上圖分三層,他們分别是是App層,OS層和Hypervisor層。對于實體伺服器而言,所有的記憶體資源都配置設定給單獨的作業系統和上面運作的應用。應用将請求先發送給作業系統,然後作業系統排程實體的記憶體資源。

我們以下面一個場景為例,來分析記憶體在各層中是如何配置設定的。

上面說的是記憶體配置設定的過程,那麼記憶體是如何釋放的呢?

App通過系統調用告訴OS來釋放不需要的記憶體。可OS認為所有設定在虛拟機上的記憶體都是專門配置設定給自己的,并不會釋放Guest Physical Memory,而是建立一個Free List來記錄該記憶體是可以被重新配置設定的。而Hypervisor根本無法通路這個Free list。是以根本無法釋放實體記憶體。

二 Hypervisor如何釋放實體記憶體?

這下問題來了,根本别指望通過Guest來能釋放實體記憶體。那究竟Hypervisor是怎麼釋放記憶體的呢?主要有下面幾個技術:

TPS (Transparent Page Sharing)TPS預設是一直自動運作的。比如一台ESXi主機上運作多個虛拟機,他們的OS和App很類似,必然很多記憶體頁的内容是一樣的,Hypervisor就會比較這些頁面,在實體記憶體去除備援,僅僅保留單個頁面的資訊。進而減少了實體記憶體的消耗。

Swapping:

三記憶體Over-commitment:

顧名思義,就是說配置設定出去的記憶體比實際擁有的記憶體多。那麼Over-commitment是如何衡量的呢?帶來的影響是什麼?

<a href="http://blog.51cto.com/attachment/201311/091247328.png" target="_blank"></a>

更多的關于記憶體的衡量名額參考:

http://www.vmware.com/support/developer/vc-sdk/visdk400pubs/ ReferenceGuide/memory_counters.html

上圖很好的解釋了在虛拟機這一層常用的一些與記憶體相關的術語和他們的關系。

這裡特别要注意的是Active Memory. 指的是虛拟機中應用經常通路的記憶體。它并不能等同于這個虛拟機最少需要的記憶體,可是它可以幫助你判斷該虛拟機的記憶體頁面的活動情況,以及在該虛拟機上運作的應用是繁忙還是空閑。

Configured MemoryOvercommitment = (Sum of VMs’ configured memory)/ Host memoryavailable for VMs

比方說ESXi主機實體記憶體是16G,運作6個VM,每個VM的Configured Memory是4G,那麼該值是(6*4)/16 = 1.5

Active MemoryOvercommitment = (Sum of VMs’ machineactive memory)/host memory available for VMs

ESXi主機實體記憶體是16G,運作6個VM,每個VM的Configured Memory是4G,假設每個VM的Active Memory是2.5G。那麼該值是(6*2.5)/16=0.93

在Configured MemoryOvercommitment &gt; 1的時候,并不能說明什麼問題,也不能推斷出應用有性能下降。因為Hypervisor可以利用balloning,TPS和compression等方式把實體記憶體釋放。一般來講,這個值超過1.5甚至更多,可以最大化的利用好實體記憶體。

Active MemoryOvercommitment 接近1的時候,就需要格外注意了。有可能某些應用已經瀕臨性能下降的邊緣。ESXi主機的實體記憶體肯能已經不能滿足Active Memory的需要了。這時需要把一些VM vMotion到其他有充足記憶體的主機。

參考:

<a href="http://mylearn.vmware.com/courseware/79549/TA7750_formatted_v4.pdf" target="_blank">Vmworldsession 2010 TA7750</a>

<a href="http://www.quest.com/whitepaper/vm-memory-vram-sizing-considerations819464.aspx" target="_blank">VMMemory (vRAM) Sizing Considerations</a>

<a href="http://delxu.blog.51cto.com/975660/288682/" target="_blank">圖解VMware記憶體機制</a>

<a href="http://frankdenneman.nl/2010/02/15/impact-of-host-local-vm-swap-on-ha-and-drs/" target="_blank">Impactof host local VM swap on HA and DRS</a>

本文轉自frankfan751CTO部落格,原文連結:http://blog.51cto.com/frankfan/1320702 ,如需轉載請自行聯系原作者

繼續閱讀