VMware在虛擬機開機的時候,會在虛擬機所在的資料夾內建立vmem檔案。該檔案大小可能與虛擬機所設定的記憶體大小相同,目的是備份虛擬機記憶體的內容。也就是說,虛擬機每次記憶體的操作行為,實體記憶體與實體硬碟都會收到一次存取請求。虛擬機在進行快照的時候,VMware也會拷貝虛擬機記憶體內容到實體硬碟。這也間接導致實體硬碟的性能對於虛擬機的影響巨大(虛擬記憶體+虛擬硬碟),若VMware SWAP記憶體不在固態硬碟的話效果就會很差。
以下的設定主要建立在VMware on Windows,對於虛擬機本身要有以下的認知。
由於此功能對於一些舊型的作業系統影響不大(Vista以前),所以這裡偏好對虛擬機單獨設定。
步驟
prefvmx.minVmMemPct = "100" MemTrimRate = "0" mainMem.useNamedFile = "FALSE" sched.mem.pshare.enable = "FALSE" prefvmx.useRecommendedLockedMemSize = "TRUE"
設定說明
prefvmx.minVmMemPct
[與不使用VMware SWAP相關]
預設為50,讓VMware知道此虛擬機的虛擬記憶體要分配多少到實體記憶體上。在預設值下,8GB的虛擬記憶體就會使用4GB的實體記憶體與4GB的VMware SWAP記憶體(建立在實體硬碟上)。所以這裡設定100的目的是把所有虛擬記憶體設定到實體記憶體,也就不會動用到VMware SWAP記憶體。
MemTrimRate
[與虛擬記憶體存取相關]
預設為-1,當虛擬機有閒置的記憶體時,VMware會將這些閒置的部份回收給實體作業系統。如果將此選項設定為0,VMware將不會進行此回收機制。
mainMem.useNamedFile
[與不使用vmem檔相關]
預設為開,讓VMware在虛擬機所在位置建立vmem檔案,用以存放VMware SWAP記憶體。如果將此選項設定為false,VMware SWAP記憶體會交由作業系統決定(Windows會放到pagefile.sys、Linux會放到/tmp資料夾)。如果你的實體作業系統在固態硬碟(虛擬作業系統在機械硬碟)的話,可以只使用這方法提升效能。
sched.mem.pshare.enable
[與虛擬記憶體存取相關]
預設為開,讓VMware為了記憶體共享進行快取,以便多處理器進行存取。目前看到此功能在多個相同規格的虛擬機(尤其是相同作業系統)的幫助較大,但對於單一作業系統的影響較小。關閉此選項的話會讓VMware強制關閉虛擬作業平台的虛擬記憶體管理分享裝置,也能減少VMware對記憶體進行重複存取的機會。
prefvmx.useRecommendedLockedMemSize
[與虛擬記憶體存取相關]
預設為關,若虛擬機無法從實體記憶體獲取所需的虛擬記憶體大小時,虛擬機會動態調配自身部份虛擬記憶體到VMware SWAP,以便從實體記憶體獲取剩餘的記憶體分配。開啟此選項會造成虛擬機必須取得足量的實體記憶體分配才能開機,也能阻止虛擬記憶體被縮小的可能。
若在個人使用單一虛擬作業系統上,只要Host的資源(CPU, 記憶體, 硬碟)充足,讓虛擬機自行管理資源才能獲得最佳的效能。若是要相容一些特殊的作業系統,VMware(或其他虛擬化軟體)提供的功能(包含硬體兼容、快照)才是虛擬機需要的部份。