VMware vSphere 5.1 CPU 資源分配

由 Derek 發表於 十月 12, 2012 / 尚無評論

前言 :

現在公司企業,大多都希望能用最少的設備整合出最大的效率。所以在資源的分配上就更顯的重要了。總不能 VM 一直開,而不去管理資源的分配吧。這樣的話就算有在多的CPU、Memory或硬碟空間也會有不夠用的時後。也正因如此就來介紹一下在VMware vSphere上CPU資源分配方式吧。

 

設定 :

不論是 CPU 或 Memory 在資源分配上都有三種設定 Limit、Reservation 或 Shares。靈活運用這三種設定,就能在有限的資源內發揮最大的效率。在使用單位上 CPU為MHz,而Memory為MB。

 

1. 設定的位置

先來說明一下資源分配的設定位置

[要設定的 VM 點右鍵] → [Edit Settings]

 

接下來點選 [Resources] 後,再選擇 [CPU]

 

在下圖的紅框內就是要設定Limit、Reservation 或 Shares的地方。

要設定 Limit 的話請記得把「Unlimited」的勾取消

 

2. Limit

Limit 主要是用來限制 CPU 使用上限。簡單來說,假設 VM 的Limit 設定為 2000MHz 時,不論實體CPU還有多少運算資源能使用,或是有無其他 VM 爭相使用。最高上限就是只能使用到2000MHz,無法再上去了。除非修改Limit的上限值。

不過在設定CPU Limit時有些地方要注意。Limit會受到以下情況而有所限制

(1) VM 有多少vCPU

(2) 實體 CPU的運算時脈

(3) VM 上層的 ESXi host 或 Resource Pool (資源池)的限制。

 

有關實體 CPU 的運算時脈可查看,下圖紅框。

實體運算時脈 8 CPUs × 2.127 GHz = 17.016 GHz = 17016 MHz

 

3. Reservation

Reservation主要是用來「保留」資源,一旦設定Reservation的數值後,就一定會得到這獨占的實體資源。也就是說假設 VM 的 Reservation 設定為1000 MHz時,當開機時,實體資源就一定保證會分1000 MHz 的 CPU 運算效能給 VM使用。而此1000 MHz是不會跟別的 VM 共享或是搶走使用。

 

在設定 Reservation 時要注意以下幾點

(1) CPU Reservation 預設值為0。

(2) 避免資源的浪費,所以在 CPU Reservation 資源的分配上。並不是給越多越好,因為一旦分備給 Reservation 使用的資源就會從實體資源上扣除。因此最好的分配方式,應該是先了解該 VM 使用到CPU Reservation 的資源大概是多少,然後在依照運作的「最低需求」分備資源。

 

4. Shares

CPU Shares 主要是用來分配額外資源的部份。採取比例或比重的方式來分配資源,在比重分配方面有分為以下四種。

Low         500

Normal   1000

High        2000

Custom  自定

在 Low:Normal:High 比重上為 1:2:4。

 

如果 VM 的CPU 設定 Limit為 2000 MHz、Reservation 為1000MHz時。表示說此 VM 的CPU運算資源最多為2000MHz,最少保證會有1000MHz。但當在與其他 VM 相互競爭資源時,該 VM 到底能爭取到多少資源?是1200HMz還是1600MHz,這就要看Shares的設定了。

 

用兩個範例來簡單說明設定方式 :

範例一

問題 :

當三個 VM 相互競爭資源時,VM (1、2、3) 分別能拿到多少資源 ?

 

條件 :

  1. CPU 運算資源為 4GHz=4000MHz
  2. 三個 VM (1、2、3)
  3. 每個 VM 的CPU 設定 Limit為 2000 MHz
  4. 每個 VM 的CPU 設定 Reservation 為1000MHz
  5. 每個 VM 預設的Shares都是 Normal (1000)

 

算法 :

當三個 VM 同時相互競爭資源時,在Reservation的部份已經使用了 3000MHz。所以剩下可用的資源為 4000MHz-3000MHz=1000MHz。由於三個 VM 的 Shares都為 Normal (1000),所以在比重上為 VM1:VM2:VM3=1:1:1。因此每個 VM 都可平均分配到剩下可用資源(1000MHz)的三分之一(33%)CPU運算資源。也就是說當三個 VM相互競爭時,每個 VM 可使用到的資源為1333MHz。

 

 

範例二

問題 :

當三個 VM 相互競爭資源時,VM (1、2、3) 分別能拿到多少資源 ?

 

條件 :

  1. CPU 運算資源為 4GHz=4000MHz
  2. 三個 VM (1、2、3)
  3. 每個 VM 的CPU 設定 Limit為 2000 MHz
  4. 每個 VM 的CPU 設定 Reservation 為1000MHz
  5. VM1的 Shares 為 High(2000)、VM2的 Shares 為 Normal(1000)、VM1的 Shares 為 Low(500)

 

算法 :

當三個 VM 同時相互競爭資源時,在Reservation的部份已經使用了 3000MHz。所以剩下可用的資源為 4000MHz-3000MHz=1000MHz。三個 VM 的 Shares為 VM1=High(2000)、VM2=Normal(1000)、VM1=Low(500),所以在比重上為 VM1:VM2:VM3=4:2:1。因此每個 VM 都可依比重分配剩下的資源

VM1=1000MHz*4/7=571MHz

VM2=1000MHz*2/7=286MHz

VM3=1000MHz*1/7=143MHz

也就是說當三個 VM相互競爭時,每個 VM 可使用到的資源為VM1=1571MHz、VM2=1286MHz、VM3=1143MHz

 

在設定 Shares 時要注意以下幾點

(1) 會使用到 Shares 的情況,通常都是 VM 在相互競爭資源時才會發生的。平時是不會有作用的,在 VM 沒競爭時都可獨享所有資源。

(2) 當沒設定 Reservation,而產生資源競爭的時後。就會完全依照 Share 比重分配。

 

  

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

此文章尚無評論。

發表評論

*