前言 :
在講解過 CPU 的資源分配後,接下來說明一下Memory 的資源分配。隨然在 CPU和 Memory 的設定方式上大同小義,不過還是將這兩個部分獨立出來說明會比較容易了解。對CPU 資源分配有不了解的地方,可參考此篇「VMware vSphere 5.1 CPU 資源分配」
設定 :
不論是 CPU 或 Memory 在資源分配上都有三種設定 Limit、Reservation 或 Shares。靈活運用這三種設定,就能在有限的資源內發揮最大的效率。在使用單位上 CPU為MHz,而Memory為MB。
1. 設定的位置
先來說明一下資源分配的設定位置
[要設定的 VM 點右鍵] → [Edit Settings]
接下來點選 [Resources] 後,再選擇 [Memory]
在下圖的紅框內就是要設定Limit、Reservation 或 Shares的地方。
要設定 Limit 的話請記得把「Unlimited」的勾取消
請不要把「Reserve all guest memory (All locked)」打勾,要不然會無法設定。
2. Limit
Limit 主要是用來限制 Memory 使用上限。簡單來說,假設 VM 的Limit 設定為 2048 MB 時,不論實體 Memory還有多少能使用,或是有無其他 VM 爭相使用。最高上限就是只能使用到2048 MB = 2 GB,無法再上去了。除非修改Limit的上限值。在修改 Memory Limit 可以直接修改設定,不用關機修改後在開機。
不過在設定 Memory Limit時有些地方要注意。Limit會受到以下情況而有所限制
(1)VM 有多少Memory
(2)實體 Memory 的大小
(3)VM 上層的 ESXi host 或 Resource Pool (資源池)的限制。
有關實體 Memory的大小可查看,下圖紅框。
在紅框內 Capacity 會顯示ESXi host 記憶體全部的大小
24563.02 MB ÷ 1024 = 24GB
3. Reservation
Reservation主要是用來「保留」資源,一旦設定Reservation的數值後,就一定會得到這獨占的實體資源。也就是說假設 VM 的 Reservation 設定為1024 MB時,當開機時,實體資源就一定保證會分1024 MB 的實體記憶體能給 VM使用。而此1024 MB是不會跟別的 VM 共享或是搶走使用。
在設定時要注意以下幾點
(1) Memory Reservation 預設值為0。
(2) 當實體記憶體已沒有多餘的可以使用時,如果又設定了 Reservation 則會造成 VM 無法開機。
(3) 避免資源的浪費,所以在 Memory Reservation 資源的分配上。並不是給越多越好,因為一旦分備給 Reservation 使用的資源就會從實體資源上扣除。因此最好的分配方式,應該是先了解該 VM 使用到 Memory Reservation 的資源大概是多少,然後在依照運作的「最低需求」分備資源。
4. Shares
Memory Shares 主要是用來分配額外資源的部份。採取比例或比重的方式來分配資源,在比重分配方面有分為以下四種。
Low 10240
Normal 20480
High 40960
Custom 自定
在 Low:Normal:High 比重上為 1:2:4。
如果 VM 的 Memory 設定 Limit為 2048 MB、Reservation 為1024 MB時。表示說此 VM 的Memory 最多為2048 MB,最少保證會有1024 MB。但當在與其他 VM 相互競爭資源時,該 VM 到底能爭取到多少資源?是1300 MB還是1600 MB,這就要看Shares的設定了。
用兩個範例來簡單說明設定方式 :
範例一
問題 :
當三個 VM 相互競爭資源時,VM (1、2、3) 分別能拿到多少資源 ?
條件 :
- Memory為 4 GB = 4096 MB
- 三個 VM (1、2、3)
- 每個 VM 的CPU 設定 Limit為 2048 MB
- 每個 VM 的CPU 設定 Reservation 為1024 MB
- 每個 VM 預設的Shares都是 Normal (1000)
算法 :
當三個 VM 同時相互競爭資源時,在Reservation的部份已經使用了3072 MB。所以剩下可用的資源為 4096 MB-3072 MB =1024 MB。由於三個 VM 的 Shares都為 Normal (1000),所以在比重上為 VM1:VM2:VM3=1:1:1。因此每個 VM 都可平均分配到剩下可用資源(1024 BM)的三分之一(33%)CPU運算資源。也就是說當三個 VM相互競爭時,每個 VM 可使用到的資源為1365 MB。
範例二
問題 :
當三個 VM 相互競爭資源時,VM (1、2、3) 分別能拿到多少資源 ?
條件 :
- Memory為 4 GB = 4096 MB
- 三個 VM (1、2、3)
- 每個 VM 的CPU 設定 Limit為 2048 MB
- 每個 VM 的CPU 設定 Reservation 為1024 MB
- VM1的 Shares 為 High (40960)、VM2的 Shares 為 Normal (20480)、VM1的 Shares 為 Low (10240)、
算法 :
當三個 VM 同時相互競爭資源時,在Reservation的部份已經使用了 3072 MB。所以剩下可用的資源為 4096 MB-3072 MB =1024 MB。三個 VM 的 Shares為 VM1=High (40960)、VM2=Normal (20480)、VM1=Low (10240),所以在比重上為 VM1:VM2:VM3=4:2:1。因此每個 VM 都可依比重分配剩下的資源
VM1=1024MB*4/7=585MB
VM2=1024MB*2/7=293MB
VM3=1024MB*1/7=146MB
也就是說當三個 VM相互競爭時,每個 VM 可使用到的資源為VM1=1609MB、VM2=1317MB、VM3=1170MB
在設定 Shares 時要注意以下幾點
(1) 會使用到 Shares 的情況,通常都是 VM 在相互競爭資源時才會發生的。平時是不會有作用的,在 VM 沒競爭時都可獨享所有資源。
(2) 當沒設定 Reservation,而產生資源競爭的時後。就會完全依照 Share 比重分配。但不論無何分配都不會超過 Limit 所設定的數值,一但超過的話也只能使用到 Limit 所設定的大小,超出的部份會在分配給其他有需要的使用
評論
此文章尚無評論。