【虛擬化實戰】VM設計之三內存資源控制

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

VM內存資源控制是如何實現的?它可能帶來的影響是什麼?本文從概念到實戰來闡述如何做好虛擬機上內存資源控制。

概念

Reservations預留了一部分物理內存供VM或者資源池使用。一旦VM或資源池的內存需求達到了Reservation的規定值,這部分內存就完全分配給該VM或資源池,不可以再分配出去。

Shares定義了在出現資源競爭的情況下,VM或者資源池可以獲得資源的份額。比如VM1和VM2的份額比例是2:1,VM1比VM2有2倍的機會搶到資源。

Limits決定了VM可以最大使用的內存。這是通過VMware Tools中包括的BallooningDriver來實現的。



二 實例

092616125.png

上圖摘自frank denneman的文章Impact of memory reservation.該圖很好的解釋了內存控制中幾個重要參數的關係。MPN指MachinePage Number,是用來映射真實物理內存的。

假設一臺ESXi主機有8G內存,我們爲圖中所示VM1設置2G內存,那麼ConfiguredMemory是2G。然後設置1G reservation。還有VM2,VM3,VM4和VM5分別設置了2G內存。但沒有設置Reservatin

VM1啓動時,可能需要使用的內存很少,還沒有達到Reservation的值。那麼這部分多餘的內存,還是可以供Hyperviosr調度給其他VM使用的。如果VM1上的應用需要更多的內存,一旦達到Rerservation的值之後,圖中所示的Guaranteed MPN註明這部分預留內存會一直分配給VM1,而不允許其他VM使用。

VM1-VM5的configured Memory總和是2*5=10G,而該主機真實物理內存僅有8G, 假設這時VM2-VM5上的應用所需要的活動內存(Active Memory)的總和小於8G,那麼是沒有任何性能的影響的。

假如Active Memory總和接近甚至大於8G,那麼意味着物理內存短缺,可能會造成VM之間資源競爭。這時候Share的設置就發揮作用了。

爲了簡化的目的,我們假設ESXi爲保證Hypervisor運行的內存,再加上5個VM的memoryOverhead總和是1G

可供所有VM分享的內存=8G主機內存-1G Overhead - VM1的1G Reservation=6G。假設VM1的share分配是High ,其他VM的share是Normal。那麼這6G內存分配是:VM1:33% VM2:16% VM3: 16% VM4:16% VM5: 16%

那麼剩餘的Active Memory的缺口,只能靠Swapping來實現了。VM Swap File 是在VM啓動時自動生成的。通常存放在VM的Home Directory。

VM Swap File Size = Configured memory – memory reservation

上面VM1 的 Swap Size = 2G – 1G = 1G

特別要區分VM Swapfile 和 OS Swap file,VMware Swapfile是Hypervisor用來彌補該VM對物理內存的需要,把暫時不用的信息從物理內存中取出,存放在disk上的Swapfile中。


考慮因素

Reservation,Share和limit在什麼情況下適合使用呢?建議儘量在Resource Pool中設置資源控制,因爲在VM中設置會增加系統管理員的負擔,同時可能對整個虛擬化平臺帶來一些影響。

Reservation

如果是個別VM上運行關鍵的應用,可以考慮Reservation。簡單的做法是設置和ConfiguredMemory一樣大小。但這可能造成不必要的資源浪費。道理很簡單,reservation是保證了該VM的一部分物理內存需求,但意味着整個主機可以共享的物理內存減少了。可能影響到能夠運行在該主機上的VM的個數。

比如該VM的Configured Memory是2G,其實活動的內存只有1G,如果一定要設置Reservation的話,最好設置爲1G。

Share

僅僅在資源有競爭的情況下才會發揮作用。

Limit

VM上設置Limit,意味着該VM不能充分使用ConfiguredMemory. 除非物理內存嚴重不足,不建議在VM上使用Limit。因爲這有可能會造成資源不能被使用,也會增加排錯的複雜性。



參考:

Impact of memory reservation.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章