Accelerating VM's on your Laptop
Recently, in my courses, I was given a VM that ran what I considered obnoxiously slow for a 12th-generation CPU, which started down a bit of a rabbit hole. Some of the things mentioned you may have already done, and some may also cause issues, so it is important that you obviously make a backup and test on your own systems. Some of the proposed solutions may be available under the GUI of VMware Workstation, and others configured by accessing the virtual machine config file which is the file with the extension .vmx found in the VM directory. This file is easily edited using your favorite text editor while the machine is turned off (not paused)
Disable Cloud Storage
In newer version of Windows by default OneDrive is heavily integrated. When running it will backup your Desktop, Documents, Pictures. Couple issues with this is generally most don't have a OneDrive Subscription leading to a unique situation where the files are queued to backup via one drive but don't as storage is full and the other is some software I have found has issues with OneDrive. One of which is VMware, every time I have had someone store their VM in a OneDrive backed up folder it breaks.
To solve this issue when you save each VM you simply just change the directory. The way to solve this globally is through the preferences. This is found through the menu
Edit->Preferences-->Workspace Tab
All you need to adjust is the "Default location for virtual machines". My suggestion is to maintain privacy and control of the VMs create a new folder in your %Userprofile% called VirtualMachines; for instance if my username was Riley the "userprofile" path would be:
C:\Users\Riley\VirtualMachines
This would be under still your permissions set to your user directories however it will be outside the default backup location for cloud software.
Side Channel Mitigation
First, the most obvious thing that people jump to is to check off "Disable side-channel mitigations for Hyper-V enabled hosts." This feature was created to protect against side channel attacks. More information can be found here: VMware KB 79832. It isn't always a guarantee; however, for the situations in which I've been using VMs, it works or at least has helped.
If you don't have the ability to disable it as your using player you will need to open the .vmx file in your text editor and add the following to it.
ulm.disableMitigations="TRUE"
Drive Type
One thing that I didn't even realize immediately was that the OVA we were provided by default when it was imported into VMware created a hard disk of which it was using an IDE interface instead of the typical SCSI or NVME depending on the drive selected by default.
In this case it was more of a hunch and it makes sense. This really depends on what your doing in vmware so proceed with caution. I removed the hard drive from the virtual machine (This only removes it from the VM and not the hard drive). Then I added a hard disk; but instead selected existing and selected the .vmdk file. Effectively it changed the interface the drive was using and speed up the boot speed dramatically on my dev ops linux install, from taking upto a minute at times to boot bringing it down to around 20 seconds.
Other Tweaks
The next changes I made are more related around the configuration file so in order to change them you need to open up the virtual machine config file. This file as before is found in the virtual machine folder with the file extension .vmx . Simply edit it when your VM is shut down (Not Paused) using your favorite text editor.
sched.mem.pshare.enable = "FALSE"
mainMem.useNamedFile = "FALSE"
prefvmx.minVmMemPct = "100"
prefvmx.useRecommendedLockedMemSize = "TRUE"
sced.mem.pshare - will turn off memory sharing between virtual machines
mainMem.useNamedFile - Will stop the VM from creating a memory file in the VM folder. This will however cause the VM to take longer to suspend however I have found it speeds it up and with NVME drives writing a swap file to the drive constantly isn't my idea of exciting use of write cycles.
prefvmx.minVmMemPct - This will basically keep the Guest VM in memory vs trying to swap it out.
MemTrimRate - This will stop the hypervisor from releasing memory back to the host. I found at times if you dont have the VM open for awhile just with with a web browser in the background it can increase the responsiveness in a typical idle state VM thats running.
From my experience, these two help with the shutdown delay where some systems get hung on a black screen.
mainMem.partialLazySave - Don't Save snapshots in the background
mainMem.partialLazyRestore - Don't restore snapshots in the background
And remember these changes need to be configured for each VM unless you edit the main config file.
%PROGRAMDATA%\VMWare\VMware Workstation\config.ini
References
While I would like to say I came up with all these things it wouldn't be without others so places of reference can be found below if you wish to read
https://gist.github.com/wpivotto/3993502
https://kb.vmware.com/kb/2030543
https://kb.vmware.com/s/article/79832
https://communities.vmware.com/t5/VMware-Workstation-Pro/About-quot-mainMem-useNamedFile-FALSE-quot-Advantages/td-p/1626120
https://kb.vmware.com/s/article/1754