hypervisor VMware 虛擬化 VM

VMware vSphere資源設定與分配

2012-09-11
前期文章已經介紹過虛擬化環境中實體CPU與Memory資源的運作,是由hypervisor統一調度、分配給VM來使用。但是,多數時候不同的應用其實是有分優先順序的,重要的服務當然會擺在首位。本文延續前期的介紹,將接著探討VM資源分配與競爭的問題。
所以,假設每個小孩都設了Reservation,小孩一Power On起來拿走200萬,小孩二Power On後又拿走200萬,這時候小孩三已經無法Power On了,因為他的父母沒有錢可以供應給他。如果第三個小孩無論如何都要Power On呢?則可以有下列幾種做法:

1. 這個小孩可以不要設定Reservation嗎?如果可以接受,就能Power On,但此時就完全不保證效能了,因為沒有為其特別保留的硬體資源。
2. 兄弟倆的父母將財產重分配。哥哥有三個小孩要養,就給多一點錢,例如哥哥給600萬,弟弟給200萬,父母自己留200萬。
3. 借錢!哥哥可以向父母詢問,有沒有200萬可以借呢?如果有,小孩就能Power On,如下圖所示。


上圖中的Expandable Reservation是資源池層級才能設定,VM本身不能自行設定。勾選Expandable Reservation,就代表可以往上借錢(硬體資源),如果未勾選,就不能借錢。可以借錢不代表一定借得到,要看上一層有沒有錢可以借。

由於Resource Pool可以有很多階層,當上一層沒有錢的時候,如果它本身也有勾選Expandable,就可以再往上一層幫忙借,如下圖所示。



再來看Shares的部分。用Resource Pool的CPU Shares來舉例(假設VM本身不做任何資源設定):

1. 資源池的CPU Shares有Low(2000)、Normal(4000)、High(8000)及Custom。所占比重即為1:2:4。
2. 資源池的CPU Shares預設皆為Normal(Shares Value為4000)。

現在已經建立了兩個Resource Pool(Production、Test),希望實體CPU運算資源在VM發生競爭時,Production資源池內的VM可以擁有較多的CPU運算效能,而Test資源池之下的VM比較不是那麼重要,分到比較少的資源。

所以,假設Reservation不做設定,只將Production資源池的CPU Shares更改為High(8000),Test資源池設定為Low(2000)的話,則發生競爭的時候,Production握有8000 Shares Number,可以拿到80%資源,Test握有2000可拿到20%資源,如下圖所示。


Production的資源池運作了三個VM,而Test資源池有一個VM,假設這四個VM都同時需要運算能力,就產生了競爭,此時就按照Resource Pool的Share來分配比例。如下圖所示,4GHz的運算資源,Production握有80%,所以底下三個VM各拿到26.5%運算資源,而Test握有20%,底下只有一個VM,獨拿20%。


現在更改設定,將Test資源池的Shares從Low調整到Normal,看看會發生什麼事?

結果發現比較重要的VM,竟然分配到的資源比不重要的VM還少,如下圖所示。雖然Test資源池有4000,少於Production的8000,但是比重結構已經變成了1:2。這意味著,Production只握有66%的資源,由於底下VM較多的關係,每個VM分到的資源就被稀釋掉,因此效能反而不如Test底下的單獨VM,這是在規劃時必須要注意的一點。


記得在ESX/ESXi host下創建Resource Pools是分家的(而在Cluster的資源池則是「集合」的概念),底下的VM只會在裡面競爭資源,而不會與外面競爭。對VM來說,資源池就是它們的Host,所以它們能取用的硬體資源受限於Resource Pool(在競爭狀態下)。

結語

資源分配的基礎觀念,在實際的應用環境當然會更複雜,假使基礎的部分觀念不正確的話,沒做好資源分派的工作,將無法駕馭虛擬化的環境,所以理解基本的Resource Management非常重要。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!