VMWare Workstation performing far worse than expected

Viper GTS

n00b
Joined
Jun 12, 2006
Messages
63
Hopefully some of you smart people can figure this out.

I have a reasonably powerful PC that I am running a fairly simple Windows 10 VM on. It's just Windows 10, Office, and Slack to isolate all my pandemic work activities.

Machine specs:

Threadripper 1950X, 128 GB ECC, and 2x1TB 970 EVO+ in RAID0 (software) as a dedicated virtualization storage device. Native OS is on Optane.

Performance of the guest OS is atrocious. Booting takes several minutes sometimes, running crystal disk mark inside the VM results in low but passable initial results then on the low queue depth 4K stuff the VM just becomes completely unresponsive. Sequential performance is about 1/5 of what the RAID set will do natively.

I've already changed the machine to use a single disk file and pre-allocated space. I've tried multiple combinations of BIOS vs EFI emulation, SCSI vs SATA vs NVME storage, etc. No noticeable performance change. I have also tried moving the VM to the Optane boot drive to see if that would improve things, again no change.

Inspired by this thread:

https://communities.vmware.com/thread/536331

I installed Hyper-V and before disabling it I setup a similar Hyper-V VM. In comparison it absolutely flies. I'm seeing in excess of 80% of native disk performance, reboots are a matter of a few seconds. It performs like I would expect it to. Disabling Hyper-V and going back to Workstation performance is unchanged.

This pandemic situation is the first time I have spent serious time in Workstation, I have a decade of experience dealing with enterprise deployments of vSphere but I cannot imagine this is normal. I have a buddy with a Ryzen 3600 box doing essentially the same thing I am, his boots in ~10 seconds. My Hyper-V performance is great, but I'd really prefer to use Workstation since I am far more invested in that ecosystem.

Before I wipe this machine as a last resort, anybody seen this before/have any suggestions?
 
Last edited:
It sounds like there is something weird going on with vmware workstation, what version are you running? Also what is your Host OS? I did run into a problem with AMD-V recently in windows 10 past 1809 where it setup a virtual partition for recovery, maybe something similar? Might also explain why hyper-v was flying.
 
Yeah without knowing the build number of windows 10 and which version of workstation it's hard to suggest. I am running on 3800x with windows 10 build 2004 and workstation 15.5.5 and I am not having any performance issues with a windows 10 guest.
 
Late I know, but:

I was on fully patched 1909, now on fully patched 2004 (fresh installation directly to 2004 then updates after). Latest version of Workstation at the time, and the latest version after (15.5.5, the update for 2004). No change in performance. Yes, guest tools were installed. As for VM configuration I tried multiple combinations but never found any impact.

In between the Windows attempts I also installed the latest version of Ubuntu and put Workstation on that. Performance was basically the same (bad). To be fair I did re-use the VM from my Windows host testing so in theory if something wasn't optimal it was still not optimal.

In the new world where Hyper-V and Workstation can coexist it's much easier to flip between them but I have largely abandoned Workstation in favor of Hyper-V for daily use. I'll still use Workstation for stuff that Hyper-V doesn't support well (Tails live CD for sketchy sites, etc) but Hyper-V contineus to be rock solid and extremely performant for my use.

I am installing 15.5.6 and trying again because I have time to re-visit this I will update further if I find anything. Sadly none of this is going to be very helpful for anyone who lands here in search of solutions.
 
I have tried a few combinations. Current test machine is EFI, LSI controller, NVME disk, and split vmdk. I also tried BIOS vs EFI, NVME vs SATA and IIRC SAS, and split vs contiguous disk files both pre-allocated and not.

I am gearing up to test this exhaustively, any particular combination you find interesting?
 
I recommend the following:

EFI w/ Secure Boot
2 to 4 vCPU
4 to 8GB RAM
LSI SAS or Paravirtual
nVME drive (which is the new default on the latest version)
Split or Singular VMDK (doesn't really matter)
vmxnet3 NIC (edit in the VMX file)
3D acceleration with 1 to 3GB VRAM
USB 3.1
 
Just finishing up an install on this config:

Code:
.encoding = "windows-1252"
config.version = "8"
virtualHW.version = "16"
mks.enable3d = "TRUE"
pciBridge0.present = "TRUE"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
vmci0.present = "TRUE"
hpet0.present = "TRUE"
nvram = "Windows_10_2004_EFI_Paravirtual_NVME_Split_VMXNET3.nvram"
virtualHW.productCompatibility = "hosted"
powerType.powerOff = "soft"
powerType.powerOn = "soft"
powerType.suspend = "soft"
powerType.reset = "soft"
displayName = "Windows_10_2004_EFI_Paravirtual_NVME_Split_VMXNET3"
usb.vbluetooth.startConnected = "TRUE"
firmware = "efi"
uefi.secureBoot.enabled = "TRUE"
sensor.location = "pass-through"
guestOS = "windows9-64"
tools.syncTime = "FALSE"
sound.autoDetect = "TRUE"
sound.virtualDev = "hdaudio"
sound.fileName = "-1"
sound.present = "TRUE"
numvcpus = "4"
cpuid.coresPerSocket = "4"
memsize = "8192"
mem.hotadd = "TRUE"
sata0.present = "TRUE"
nvme0.present = "TRUE"
nvme0:0.fileName = "Windows_10_2004_EFI_Paravirtual_NVME_Split_VMXNET3.vmdk"
nvme0:0.present = "TRUE"
sata0:1.deviceType = "cdrom-image"
sata0:1.fileName = "V:\ISO\Windows_10_2004.iso"
sata0:1.present = "TRUE"
usb.present = "TRUE"
ehci.present = "TRUE"
usb_xhci.present = "TRUE"
svga.graphicsMemoryKB = "1048576"
ethernet0.addressType = "generated"
ethernet0.virtualDev = "vmxnet3"
serial0.fileType = "thinprint"
serial0.fileName = "thinprint"
ethernet0.present = "TRUE"
serial0.present = "TRUE"
extendedConfigFile = "Windows_10_2004_EFI_Paravirtual_NVME_Split_VMXNET3.vmxf"
floppy0.present = "FALSE"
numa.autosize.cookie = "40042"
numa.autosize.vcpu.maxPerVirtualNode = "4"
uuid.bios = "56 4d a9 93 f0 f5 0b b1-07 d9 88 1f b8 7b 6f f9"
uuid.location = "56 4d a9 93 f0 f5 0b b1-07 d9 88 1f b8 7b 6f f9"
vm.genid = "-8304171947069079063"
vm.genidX = "-5437370761844231056"
nvme0:0.redo = ""
pciBridge0.pciSlotNumber = "17"
pciBridge4.pciSlotNumber = "21"
pciBridge5.pciSlotNumber = "22"
pciBridge6.pciSlotNumber = "23"
pciBridge7.pciSlotNumber = "24"
usb.pciSlotNumber = "32"
ethernet0.pciSlotNumber = "160"
sound.pciSlotNumber = "33"
ehci.pciSlotNumber = "34"
usb_xhci.pciSlotNumber = "192"
vmci0.pciSlotNumber = "35"
sata0.pciSlotNumber = "36"
nvme0.pciSlotNumber = "224"
svga.vramSize = "268435456"
vmotion.checkpointFBSize = "134217728"
vmotion.checkpointSVGAPrimarySize = "268435456"
ethernet0.generatedAddress = "00:0c:29:7b:6f:f9"
ethernet0.generatedAddressOffset = "0"
vmci0.id = "-1199869959"
monitor.phys_bits_used = "43"
cleanShutdown = "FALSE"
softPowerOff = "FALSE"
usb_xhci:4.present = "TRUE"
usb_xhci:4.deviceType = "hid"
usb_xhci:4.port = "4"
usb_xhci:4.parent = "-1"
usb:1.speed = "2"
usb:1.present = "TRUE"
usb:1.deviceType = "hub"
usb:1.port = "1"
usb:1.parent = "-1"

Boot times do seem to be improved (under 30s reliably from power on to desktop. The major improvement however is this:

1593187799697.png


It actually completes, and the machine never became unresponsive. Previously this would lock the VM entirely and I'd have to power it off to recover.

For sake of comparison the Hyper-V machine I've been using for the last month:

1593188199968.png



So, the differences vs what I was doing previously:

Secure Boot
Less CPU and RAM
PVSCSI vs LSI (this seems most significant, IMO)
VMXNET3 (I use this exclusively in my production environments but have never bothered with workstation)

I will play with some of these and see if I can isolate further, but this is by far the best result I have had thus far. Much appreciate all the suggestions.

Updates:

Went from 4c/8gb to 8c/32gb with no negative effect.
 
Last edited:
Change USB 3.1 to USB 2.0

It makes a huge diff speed wise. Really weird but works.
 
Performance of the whole VM. Its the weirdest thing that setting in vmware preferences.

Ok.... thinking about it and looking stuff up.. that actually makes sense. I bet the polling rate for USB 3.1 is set way higher than 2.0 by default. A higher polling rate will eat up more CPU resources than a lower polling rate.

Sounds to me like a bug or a setting that needs to be made accessible.

This was especially noticeable on real hardware back in the day when you had to decide between a better polling rate for your mouse and extra CPU cycles for games being played..... but I guess you probably already knew that.

In any case, I think I will go ahead and switch everything from 3.0 to 2.0 on my VMs..... I actually just removed the USB controller all together in my Win10 VM and it does seem more responsive.

Also removed the CD/DVD drive. No need for that either.. If I need to load an ISO, I'll just change the settings.

The VMWare Performance Best Practices paper says to remove anything that is not needed.
https://www.vmware.com/content/dam/...performance/Perf_Best_Practices_vSphere65.pdf
 
Last edited:
Back
Top