VMware效能調整
此文件部份在VMware Server 2.0.1上驗證過。
發現在系統在VM上執行時,在效能上比起執行在實體主機時遜色很多,google到一些前人處理這類問題的經驗,現在用文件記錄下來。
在VMware環境中,資源的有效分配是讓VM正常穩定運作的不二法門,實際操作時,設定分配超過擁有的實體記憶體量給VM使用是很容易發生的事(也是被VM系統允許的),但是若以追求VM較高的效能表現,建議要避免這種情形發生,因為這會使用到Host OS的swap,而使用swap會造成Host OS系統效能不彰,操作反應緩慢的情勢發生。
依據網路上找到的文件,若要維持VM較佳的效能,下列幾個參數需要調整或加入個別VM的.vmx檔內。
VMware預設值如下:
MemTrimRate="-1"
sched.mem.pshare.enable = "TRUE"
mainMem.useNamedFile = "TRUE"
MemAllowAutoScaleDown = "TRUE"
要維持較佳的效能,請調整VMware設定值如下:
MemTrimRate="0"
sched.mem.pshare.enable = "FALSE"
mainMem.useNamedFile = "FALSE"
MemAllowAutoScaleDown = "FALSE"
prefvmx.minVmMemPct = "100"
prefvmx.useRecommendedLockedMemSize = “TRUE”
說明:
1. MemTrimRate=0
設定MemTrimRate=0後,Guest OS會執行的較快,因為分配給Guest OS的記憶體空間不會動態的回收給Host OS,會直接從主系統分配記憶體給VM使用。這樣VM運作時,不需要跟主系統分享同樣的記憶體空間,所以Guest OS會運作的較為快速。建議電腦記憶體容量充足的人就這樣設定吧。
(這個項目在VMware Server 2.0.1上驗證過,在測試平台Guest OS的效能有極明顯的改善)
2. sched.mem.pshare.enable = "FALSE"
停用memory sharing後,VM將不會分享通用記憶體block,VM也將停止比對記憶體block。強制關閉虛擬作業平台的虛擬記憶體管理分享裝置,需要較高的主系統資源,但提供比較快的虛擬環境。
3. mainMem.useNamedFile = "FALSE"
當Guest OS啟動時,VMware會把部份的Guest OS記憶體存在檔案系統上,以檔案形式存在,這是因為VMware使用了mmap(記憶體映射)的方式來管理Guest OS記憶體。藉由修改mainMem.useNamedFile = "FALSE",VMware會將這個檔案由VM所在地的目錄,改放到/tmp目錄下(Linux),或swap檔內(Windows),這個異動可能對效能有小小地幫助,特別是VM所在地的磁碟與/tmp或SWAP所在硬碟不同的時候(當然使用快速的RAM DISK來作SWAP或 /tmp差異會更明顯)。
PS:如果host主機的 /tmp 空間較小(如小於2GB),這個參數要小心使用,否則有機會出現空間不足的現象,錯誤訊息內容如:「msg.mainMemPosix.noSpace:The directory "/tmp/vmware-root/" has less then 150MB of free space...」,而該需要/tmp空間的VM也有可能會被hang住無法操作,這時候只能取消這個參數的使用,或放大 /tmp目錄後再啟用VM。
4. MemAllowAutoScaleDown = "FALSE"
這個參數設定成MemAllowAutoScaleDown = "TRUE"時,如果Guest OS設定需要2GB的記憶體,但實際上Host OS能提供給Guest OS的記憶體不到2GB,系統在啟動階段會自動調整縮小VM佔用的記憶體到Guest OS能夠在Host OS內啟動的範圍。
5. prefvmx.minVmMemPct = "100"
如果這個參數是100的話,當Guest OS啟動時,VMware會將該Guest OS的全部記憶體都使用實體記憶體,而不swap到檔案系統上;如果這個參數是50的話,VMware會將該Guest OS的部份記憶體swap到檔案系統上,部份使用實體記憶體。要高效能的話,就設為100吧。[這個設定要設在main VMWare Server configuration file (/etc/vmware/config)]
6. prefvmx.useRecommendedLockedMemSize = “TRUE”
[這個設定要設在main VMWare Server configuration file (/etc/vmware/config)]
另外,要求最高效能時的CPU核心的分配原則:
每個啟動的VM至少分配到一個單獨的CPU核心,並至少保存一個核心給系統使用,所以若是雙CPU插槽,每顆CPU有雙核心的機器,請最多開啟3個VM,每個VM固定分配一個vCPU。
numvcpus = "1"
另外,若VM能使用獨立disk controller與獨立Storage,應該會對I/O有助益(很多Server內建的disk controller的頻寬很小,cache的size也很小)。
留言列表