hypervisor VMware 虛擬化 VM

VMware vSphere資源設定與分配

2012-09-11
前期文章已經介紹過虛擬化環境中實體CPU與Memory資源的運作,是由hypervisor統一調度、分配給VM來使用。但是,多數時候不同的應用其實是有分優先順序的,重要的服務當然會擺在首位。本文延續前期的介紹,將接著探討VM資源分配與競爭的問題。
Shares

如果VM設定了Limit與Reservation,而VM_A的Memory Limit設定1000MB,Reservation設定500MB,代表VM_A最少會有500MB可以用,最多不能超過1GB,那VM到底可以用到多少呢?600MB?還是800MB?答案是不一定,這時候到底能額外得到多少資源,就由Shares來決定。

Shares是一個相對比重的數值,並非絕對,每一個VM建立的時候就會帶有Shares Number,可隨時更改數字來改變資源比重。以CPU Shares舉例,當CPU Shares有Low(500)、Normal(1000)、High(2000)及Custom,所占比重即為1:2:4。而VM的CPU Shares預設皆為Normal(Shares Value為1000)。

現在假設有三個VM(A、B、C)在ESX/ESXi運作:

1. 每個VM預設為Normal(1000),表示總共的Shares Number為3000。
2. 當三個VM開始競爭硬體資源時,每個VM會按照Shares比例分配資源,本例目前VM的Shares都是1000,所以每個VM都分配到三分之一(33%)的CPU運算資源。
3. 如果將VM_C的Shares調整為High(2000),那此時Share Number總和就變成4000,而VM_C握有2000,所分到的CPU資源就有二分之一(50%),VM_A和VM_B雖然Shares數字不變,但是資源就被稀釋,每個VM得到四分之一(25%)。
4. 現在將VM_C關機,Share Number總和就變成2000,VM_A與VM_B各握有1000,所以每個VM分到了50%的運算資源。

上述的例子是VM都同時在搶CPU資源時才會發生,很重要的一個觀念是,Shares Number平時並不會有作用,在沒有競爭的狀態下,VM可獨享所有資源,只有當VM間彼此產生競爭的時候,才會依照Shares來分配硬體資源的比例。

再來看另外一個範例(假設不考慮額外開銷),如果實體CPU的運作時脈是4GHz,有三個VM「同時」需要取用運算能力,這個時候就產生競爭,按照Shares來分配資源比重。

如果三個VM都設了Reservation,保留值為500MHz,那麼這三個VM至少都有500MHz的運算效能,是獨享不會被瓜分。至於想要用到額外的效能,就要靠Shares競爭來取得。

總實體運算資源(4GHz)扣掉已經給出去的Reservation(500MHz×3),剩下的2500MHz讓每個VM來做競爭。當三個VM的Shares為Normal(1000)的時候,每一個VM都額外拿到2.5GHz的三分之一資源(833MHz),如下圖左所示。


如果這個時候將VM_A的Shares調整為High(2000),VM_B、VM_C改為Low(500),那麼這三個VM各取得多少CPU資源呢?答案是VM_A拿到2500MHz的三分之二(1666MHz)資源,VM_B、VM_C各拿六分之一(416MHz),再加上各自的Reservation,就可得知每個VM的大約運算效能,如上圖右所示。


資源池的概念

在ESX/ESXi host下可以創建多個資源池(Resource Pool),用以切割CPU、Memory硬體資源,如此可讓不同Resource Pool底下的VM互不干擾,VM只會在同屬於自己資源池裡面競爭。

對VM來說,Pool就像是Host一樣。資源池一樣能設定Limit、Reservation與Shares,擁有了各自的硬體資源後,再透過它分配給底下的VM,提供更有彈性的階層管理。

在Reservation部分,先舉一個「兄弟分家」的例子,應該就比較容易理解。假設有一個ESX/ESXi host新增兩個資源池(Resource Pool),一個叫Production,另一個是Test。Production資源池底下有三個VM,如下圖所示。


下面的圖例將上圖轉化為兄弟分家的擬人化圖形,以便易於理解。在分配保留資源時,假設父母(ESX/ESXi host)的錢有1,000萬元(硬體資源),父母有兩個兒子,哥哥和弟弟各分得400萬元(Reservation),哥哥底下又有三個小孩(VM),那麼當這三個小孩也需要錢的時候,請問有多少可以分?


答案是400萬。因為已經分家的緣故,哥哥的三個小孩自然只有400萬可以分配,如果弟弟也有小孩,彼此兩家的小孩不會互相競爭資源,對這些VM來說,Resource Pool就好像是個Host一樣,VM只會在這個Pool底下競爭。


追蹤我們Featrue us

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

我知道了!