跳至內容
NanaIro no Sora
使用者工具
註冊
登入
網站工具
搜尋
工具
顯示頁面
舊版
反向連結
最近更新
多媒體管理器
網站地圖
註冊
登入
>
最近更新
多媒體管理器
網站地圖
足跡:
虛擬機相關:vmware不使用vmem檔
本頁是唯讀的,您可以看到原始碼,但不能更動它。您如果覺得它不應被鎖上,請詢問管理員。
VMware不使用vmem檔 === 緣由 --- VMware在虛擬機開機的時候,會在虛擬機所在的資料夾內建立vmem檔案。該檔案大小可能與虛擬機所設定的記憶體大小相同,目的是備份虛擬機記憶體的內容。也就是說,虛擬機每次記憶體的操作行為,實體記憶體與實體硬碟都會收到一次存取請求。虛擬機在進行快照的時候,VMware也會拷貝虛擬機記憶體內容到實體硬碟。這也間接導致實體硬碟的性能對於虛擬機的影響巨大(虛擬記憶體+虛擬硬碟),若VMware SWAP記憶體不在固態硬碟的話效果就會很差。 限制 --- 以下的設定主要建立在VMware on Windows,對於虛擬機本身要有以下的認知。 1. 虛擬機的作業系統重視記憶體的存取:有些作業系統為了提昇效能,會盡可能使用記憶體作為快取。所以降低VMware對虛擬記憶體的干預確實可以提昇效能,前提是虛擬機的記憶體要給足夠(否則虛擬機的作業系統還是會在虛擬硬碟上規劃SWAP來用)。 2. 快照的使用:有些虛擬機的目的為測試不可逆的行為(例如系統升級、電腦病毒投放),快照可以保留行為前的狀態(包含記憶體與硬碟的資料)。此時的效能可以考慮用固態硬碟補足,也方便減少多次測試的時間。 3. 多個相同作業系統虛擬機同時運作:VMware為了上多台虛擬機能夠運行流暢,有做過記憶體的共享以及實體記憶體與SWAP的分配。此時建立的作業系統會專注在CPU的效能,這些最佳化選項提供的幫助就有限。 目前的解法 --- 由於此功能對於一些舊型的作業系統影響不大(Vista以前),所以這裡偏好對虛擬機單獨設定。 **步驟** 1. 進入虛擬機所在的資料夾(對著虛擬機右鍵→"Open VM Directory") 2. 用文字編輯器打開該虛擬機的vmx設定檔(對著該檔案右鍵→開啟檔案→記事本) 3. 在內容最後的部份新增以下的內容後存檔 ```conf 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,以便從實體記憶體獲取剩餘的記憶體分配。開啟此選項會造成虛擬機必須取得足量的實體記憶體分配才能開機,也能阻止虛擬記憶體被縮小的可能。 實際測試結果 --- - Mac OS X 11.4 (Big Sur): MacOS對於記憶體的使用是盡可能吃滿(作為快取),若程式真的要使用就釋放給它。這台虛擬機是導致我想用這些設定的原因,尤其是開機期間看到機械硬碟過大的吞吐量以及開機速度過慢的情況下。 - Chrome OS 90.1.42: Chrome OS對記憶體雖然不會有太大的要求,但分配的部份也跟MacOS一樣會盡可能吃滿。所以經過這次調校後,開機速度也有明顯提昇。 - Windows 11 20011.1(Dev): Windows在記憶體使用上雖然沒有MacOS那麼貪婪,但在開機到登入畫面的時間確實有縮短一些。影響也是三者之間比較小的,可能Windows對於pagefile的需求還是比較大。 結論 --- 若在個人使用單一虛擬作業系統上,只要Host的資源(CPU, 記憶體, 硬碟)充足,讓虛擬機自行管理資源才能獲得最佳的效能。若是要相容一些特殊的作業系統,VMware(或其他虛擬化軟體)提供的功能(包含硬體兼容、快照)才是虛擬機需要的部份。 相關連結 ---- - [Gist - Boost VMWare Performance by disabling vmem files.](https://gist.github.com/extremecoders-re/cf8d829c108d58bfbb2e3c1f4121d7e1) - [Gist - Maximize VMWare images performance](https://gist.github.com/wpivotto/3993502) - [Pixnet - VMware效能調整](https://easychen.pixnet.net/blog/post/27163773) - [PUFTUT - What Is VMEM (Virtual Memory) File and How To Use?](https://www.poftut.com/what-is-vmem-virtual-memory-file-and-how-to-use/) - [BMC Community - Tips to increase the VMWARE performance](https://community.bmc.com/s/article/SDE-22525)
虛擬機相關/vmware不使用vmem檔.txt
· 上一次變更: 2022/08/28 23:49 由
nairosora
頁面工具
顯示頁面
舊版
反向連結
回到頁頂