iT邦幫忙

0

Xen的Memory問題

各位前輩好
小弟想請問一個關於虛擬機器的問題
目前利用XenServer 5.5來創建虛擬機器
電腦設備中有8顆CPU,10GB記憶體
我打算新增三台CPU=1顆、Memory=3GB的虛擬機器
在開機的時候,就會顯示記憶體設定超過本機擁有的資源

不過之前也用過ESX來建立虛擬機器,一樣是三台,一樣是CPU=1顆、Memory=3GB
結果開機很順利,最多就是開機時間多幾秒

我想請問的是,這限制是XenCenter介面的限制,還是Xen本身的限制?
那如果是界面上的限制,是不是可以利用微軟的PowerShell來完成開機動作?
或是有其他可以解決的方法?

2 個回答

20
kaoc
iT邦新手 1 級 ‧ 2010-11-04 08:15:27
最佳解答

VMware可以超量使用Memory, 但是Xen不行, 啟動後的記憶體剛好比 1GB 多一些, 因此剩下不到 9GB 不夠分配給三台 3GB 的虛擬系統.

解決方法: 更仔細衡量每個子系統的記憶體需求, 你的每個子系統都不會用到 3GB, 多配置也是浪費而已, 調整一下就可以解決.

看更多先前的回應...收起先前的回應...
jason1418 iT邦新手 5 級 ‧ 2010-11-04 11:08:49 檢舉

您好
Xen真的不行超量配置Memory喔...
因為我在做效能測試
所以我需要測這個配置下的效能

James iT邦大師 6 級 ‧ 2010-11-04 11:51:08 檢舉

配置超過實體的記憶體,就是會用到虛擬記憶體,這樣做效能測試也不準吧

raytracy iT邦大神 1 級 ‧ 2010-11-04 14:58:51 檢舉

+1,
VMware ESX 有 Memory Overcommit 功能, 但 Xen 和 Hyper-V 都沒有.

ESX 的 Memory Overcommit 可以到 120% 還不會感覺到效能受影響; 此外, 新版的 ESX 4.1 還有 Memory Compression 功能, 會自動壓縮記憶體內容, 增加容量.

這裡是 VMware 的實境案例, 跑 178 台 VM, 原本需要 89GB 的 RAM, 但實際上只用了 20GB:
Memory Overcommitment in the Real World

cool76 iT邦新手 5 級 ‧ 2010-11-04 17:48:22 檢舉

請問一下,
Vmware 的Memory Overcommit 和Xen-server 的dynmic memory 是同一樣東西嗎?

raytracy iT邦大神 1 級 ‧ 2010-11-05 16:53:04 檢舉

cool76提到:
Vmware 的Memory Overcommit 和Xen-server 的dynmic memory 是同一樣東西嗎?

我不知道.....不過, ESX 的 Memory overcommit 早從 3.0 版就已經有了, 那應該是 2006 年左右的事情; 而 Xen 的 DMC (Dynamic Memory Control) 好像要 5.6 版才開始有, 時間上大約落後了 4 年....

VMware 主要使用三種技術:
transparent page sharing
ballooning
host swapping
只有最後一種, 才是利用 HDD 的 Swap file 來支援, 其他兩種都是在記憶體內處理掉.

當記憶體負載還不緊迫的時候 (至少還剩下 6% 以上空間), 會優先使用 transparent page sharing 技術, 這個技術可以將各 Guest OS 裡面, 內容相同的 Memory Page 給聚合起來, 所以相同的 Page 不需要重複佔用空間, 只需要存放一份就夠了.

這種作法在有很多相同版本的 Guest OS 時, 會很有效率, 因為 OS 相同, Page 內容重複的機率很高. 這也是為何前面的案例可以只用 20GB 來跑 178 台 VM, 因為他們都是相同的 OS 版本.

raytracy iT邦大神 1 級 ‧ 2010-11-05 17:00:55 檢舉

當記憶體容量剩下 4% 時, ESX 會開始改變管理策略,改用 ballooning 技術. ballooning 簡單來說, 就是將原本由 Host (Hypervisor) 所管理的虛擬記憶體, 重新塞回給 Guest OS. 這樣一來, 可以讓 Guest OS 「感覺到」目前記憶體處於「緊迫」的狀態, 同時引發 Guest OS 內建的機制, 來節省記憶體的使用 (例如: 降低 Disk Cache 的容量).

raytracy iT邦大神 1 級 ‧ 2010-11-05 17:12:48 檢舉

當記憶體容量剩下 2% 時, ESX 會開始使用 Host swapping, 這時才會開始將 Page 寫到 HDD 去. 但此時的目標是: 希望藉由策略性的 Swap, 讓系統回復到 4% 以上的狀態, 以便能繼續採用 TPS 和 Balloon 策略.

在這個階段, 雖然用到 HDD 來 Swap, 但還不至於會變得太慢....

如果真的湧入大量需求, 以致當記憶體容量剩下 1% 時, 這時除了繼續採行 Host swapping 策略之外, 同時也會拒絕 Guest OS 要 alloca 新 page 的要求, 以減緩記憶體消耗的速度. 這時因為 Guest 被 Block, 所以就會明顯感到變慢.

您可以很容易觀察到這些狀態, 請在 ESX 的 Service Console 執行:

<pre class="c" name="code">esxtop

進入之後, 按一下 m 字, 會出現下面的畫面:

右邊的紅框內, 就代表目前的狀態:
high state = 6%
soft state = 4%
hard state = 2%
low state = 1%

raytracy iT邦大神 1 級 ‧ 2010-11-05 17:23:08 檢舉

我不知道 Xen 的 DMC 是否有如上的機制來處理, 不過看了文件之後, 感覺好像有很多要人工設定的地方; ESX 雖然也提供很多參數可以調整, 但是大部分的動作都是自動的, 不去調也可以順利使用....

另, 如果沒看錯的話, Xen 上面要啟動 DMC 功能, 似乎要買 Citrix Essentials for XenServer license 才行?....(相當於 VMware 的 vCenter, 或是微軟的 SCVMM 管理翁具)

我跟 Xen 不熟 (Xen 也很少打電話給我), 所以萬一講錯的話, 歡迎當事人來函澄清....

我要發表回答

立即登入回答