I’ve been trying to get the most performance out of my Window 10 virtual machines running on my MacBook Pro through VMware Fusion. I have a Windows 10 virtual machine that I use for software demos and testing beta versions of Windows. It’s been running much slower than you would expect on a
2 3 year old MacBook Pro with a quad core i7. I’ve collected the following tips (the sources are listed at the end) and they have improved the performance.
From the MacOS Side
Exclude the virtual disks from Time Machine backups.
You’ll want to avoid trying to back up the virtual machines by Time Machine. If Time Machine is trying to back up the virtual machine while it is being used, it will probably fail to perform the backup and it will definitely throttle the disk I/O.
- Run the Settings App
- Open “Time Machine”
- Click the “Options” button
- Under the “Exclude these items from backups”, click the “+” button.
- Select the Virtual Machines folder. By default, this will be located in your documents folder. Once you have selected the folder, press the “Exclude” button.
- Press the “Save” button
If you are running an anti-virus application on your Mac, make sure that it is excluding the Virtual Machines folder
From the Virtual Machine Side
With your virtual machine stopped, you can make some system changes to achieve better performance. Within Fusion and with the virtual machine open (but not running), open the Settings dialog. You’ll want to make the following changes:
- Open “Display” and clear the “Accelerate 3D Graphics” checkbox.
- Open “Processors & Memory”
- Set the number of processor cores to a value of n-1 or less, where n is the number of actual cores on your Mac. My Macbook Pro has a quad core i7, so I run with 2 cores assigned to the virtual machine.
- Give the virtual machine as much ram as you can, but without starving the host OS. My Mac has 16 GB, so I split it 50/50. If you have less memory, remember to leave at least 2 GB to the MacOS OS.
- Open Advanced Options and select “Enable hypervisor applications in this virtual machine”
- Open “Hard Disk (SCSI)”
- Open “Advanced options”
- Set bus type to SCSI
- Set “Pro-allocate disk space” to enabled.
There are some settings that are not directly exposed through the settings dialog. You’ll need to modify the .xmx file directly. There are a couple of ways of getting at the .vmx file, the clearest technique is documented on the vmguru.com page: “Modifying the .vmx file step-by-step”.
- Change ethernet0.virtualDev = “e1000e” to ethernet0.virtualDev = “vmxnet3”
This will change the default network adaptive to an enhanced driver
- Add the line scsi0:0.virtualSSD = 1
This will optimize disk I/O for SSD drives. Only use this if your MacBook has a SSD drive
- mainMem.backing = “swap”
May speed up memory swap files
- MemTrimRate = “0”
Disable memory trimming, less overhead for the Fusion memory manager
- sched.mem.pshare.enable = “FALSE”
Turns off memory sharing between virtual machines
- prefvmx.useRecommendedLockedMemSize = “TRUE”
Speed up I/O at the cost of increased memory usage in the host OS
- MemAllowAutoScaleDown = “FALSE”
Prevents Fusion from attempting to start the virtual machine with less memory than specified. This can trigger Windows activation.
- logging = “FALSE”
Disabling the logging should speed things up a bit
If you don’t need snapshots, remove them. When you use a snapshot, disk I/O is parsed through each snapshot. That will show things down.
Resources for these suggestions
- VMware Performance Enhancing Tweaks (Over-the-Counter Solutions)
- Making Windows 10 inside VMWare Fusion 8.x a bit quicker on OSX 10.11 El Capitan
- How to Fix Slow Windows VMs on VMware Fusion 8.x
- Excluding the Virtual Machines folder from being backed up by Time Machine (1014046)
- Troubleshooting Fusion virtual machine performance for disk issues (1022625)