YF-le
Contributor
Contributor

Very poor CPU performance

Jump to solution

Hello there.

I recently installed Windows 11 on VMware, but I'm getting extremely poor CPU performance, the CPU usage is around 60-70% usually, and if I run any applications it gets to 100%.

I looked online for different solutions, I tried Defragmenting the disk, using preallocated rather than dynamic, using an SSD rather than a HDD. But these only made the VM slightly smoother and the CPU usage stayed the same.

I made a new VM in Virtualbox and used VMware's VMDK file, and the VM ran smoothly with 2 cores and 4GB of RAM

I gave the VM 4 cores and 8GB of RAM

I'm running VMware workstation PRO 16 on Manjaro Linux.

CPU: Intel Core i7-7500U
RAM: 20GB

Content of VMX file:

Spoiler
#!/usr/bin/vmware
.encoding = "UTF-8"
config.version = "8"
virtualHW.version = "19"
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 11.nvram"
virtualHW.productCompatibility = "hosted"
powerType.powerOff = "soft"
powerType.powerOn = "soft"
powerType.suspend = "soft"
powerType.reset = "soft"
displayName = "Windows 11"
usb.vbluetooth.startConnected = "TRUE"
firmware = "efi"
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 = "2"
memsize = "8192"
mem.hotadd = "TRUE"
sata0.present = "TRUE"
nvme0.present = "TRUE"
nvme0:0.fileName = "DISK.vmdk"
sata0:1.deviceType = "cdrom-image"
sata0:1.fileName = "/run/media/myms/ventoy/Windows(11).iso"
sata0:1.present = "TRUE"
usb.present = "TRUE"
ehci.present = "TRUE"
usb_xhci.present = "TRUE"
svga.graphicsMemoryKB = "4194304"
ethernet0.connectionType = "nat"
ethernet0.addressType = "generated"
ethernet0.virtualDev = "e1000e"
serial0.fileType = "thinprint"
serial0.fileName = "thinprint"
ethernet0.present = "TRUE"
serial0.present = "TRUE"
extendedConfigFile = "Windows 11.vmxf"
floppy0.present = "FALSE"
numa.autosize.cookie = "40022"
numa.autosize.vcpu.maxPerVirtualNode = "4"
uuid.bios = "56 4d 56 98 f1 1d a6 96-39 b3 06 97 9d 9b 9e 8c"
uuid.location = "56 4d 56 98 f1 1d a6 96-39 b3 06 97 9d 9b 9e 8c"
vm.genid = "2574486509314956863"
vm.genidX = "7458366503585389019"
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"
sata0.pciSlotNumber = "35"
nvme0.pciSlotNumber = "224"
svga.vramSize = "268435456"
vmotion.checkpointFBSize = "4194304"
vmotion.checkpointSVGAPrimarySize = "268435456"
vmotion.svga.mobMaxSize = "268435456"
vmotion.svga.graphicsMemoryKB = "262144"
vmotion.svga.supports3D = "1"
vmotion.svga.baseCapsLevel = "9"
vmotion.svga.maxPointSize = "189"
vmotion.svga.maxTextureSize = "16384"
vmotion.svga.maxVolumeExtent = "2048"
vmotion.svga.maxTextureAnisotropy = "16"
vmotion.svga.lineStipple = "1"
vmotion.svga.dxMaxConstantBuffers = "14"
vmotion.svga.dxProvokingVertex = "1"
vmotion.svga.sm41 = "1"
vmotion.svga.multisample2x = "1"
vmotion.svga.multisample4x = "1"
vmotion.svga.msFullQuality = "1"
vmotion.svga.logicOps = "1"
vmotion.svga.bc67 = "9"
vmotion.svga.sm5 = "1"
vmotion.svga.multisample8x = "1"
vmotion.svga.logicBlendOps = "1"
ethernet0.generatedAddress = "00:0c:29:9b:9e:8c"
ethernet0.generatedAddressOffset = "0"
vmci0.id = "-1650745716"
monitor.phys_bits_used = "45"
cleanShutdown = "FALSE"
softPowerOff = "FALSE"
usb:1.speed = "2"
usb:1.present = "TRUE"
usb:1.deviceType = "hub"
usb:1.port = "1"
usb:1.parent = "-1"
checkpoint.vmState = ""
tools.remindInstall = "FALSE"
vvtd.enable = "TRUE"
vhv.enable = "TRUE"
vpmc.enable = "TRUE"
sata0:1.startConnected = "FALSE"
gui.lastPoweredViewMode = "fullscreen"
toolsInstallManager.lastInstallError = "0"
svga.guestBackedPrimaryAware = "TRUE"
toolsInstallManager.updateCounter = "1"
guestInfo.detailed.data = "architecture='X86' bitness='64' buildNumber='22000' distroName='Windows' distroVersion='10.0' familyName='Windows' kernelVersion='22000.318' prettyName='Windows 10 Pro, 64-bit (Build 22000.318)'"
isolation.tools.hgfs.disable = "FALSE"
sharedFolder0.present = "TRUE"
sharedFolder0.enabled = "TRUE"
sharedFolder0.readAccess = "TRUE"
sharedFolder0.writeAccess = "TRUE"
sharedFolder0.hostPath = "/"
sharedFolder0.guestName = "ROOT"
sharedFolder0.expiration = "never"
sharedFolder.maxNum = "1"
usb.generic.autoconnect = "FALSE"
usb.generic.allowHID = "TRUE"
serial0.startConnected = "FALSE"
nvme0:0.present = "TRUE"
usb_xhci:4.present = "TRUE"
usb_xhci:4.deviceType = "hid"
usb_xhci:4.port = "4"
usb_xhci:4.parent = "-1"

 Detailed system info:

Spoiler
System:
 Kernel: 5.15.32-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 11.2.0
   parameters: BOOT_IMAGE=/boot/vmlinuz-5.15-x86_64
   root=UUID=ee069653-05a6-40d7-911d-edad961c95f4 rw quiet apparmor=1
   security=apparmor udev.log_priority=3
 Desktop: KDE Plasma v: 5.24.4 tk: Qt v: 5.15.3 info: latte-dock
   wm: kwin_x11 vt: 1 dm: SDDM Distro: Manjaro Linux base: Arch Linux
Machine:
 Type: Laptop System: LENOVO product: 80TU v: Lenovo ideapad 310-14IKB
   serial: <superuser required> Chassis: type: 10 v: Lenovo ideapad 310-14IKB
   serial: <superuser required>
 Mobo: LENOVO model: Torronto 4C2 v: NO DPK serial: <superuser required>
   UEFI: LENOVO v: 3JCN21WW date: 09/23/2016

Memory:
 RAM: total: 19.44 GiB used: 6.07 GiB (31.2%)
 RAM Report:
   permissions: Unable to run dmidecode. Root privileges required.
CPU:
 Info: model: Intel Core i7-7500U bits: 64 type: MT MCP arch: Amber/Kaby Lake
   note: check family: 6 model-id: 0x8E (142) stepping: 9 microcode: 0xEC
 Topology: cpus: 1x cores: 2 tpc: 2 threads: 4 smt: enabled cache:
   L1: 128 KiB desc: d-2x32 KiB; i-2x32 KiB L2: 512 KiB desc: 2x256 KiB
   L3: 4 MiB desc: 1x4 MiB
 Speed (MHz): avg: 3500 min/max: 400/3500 scaling: driver: intel_pstate
   governor: powersave cores: 1: 3500 2: 3500 3: 3500 4: 3500 bogomips: 23209
 Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
 Vulnerabilities:
 Type: itlb_multihit status: KVM: VMX disabled
 Type: l1tf
   mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable
 Type: mds mitigation: Clear CPU buffers; SMT vulnerable
 Type: meltdown mitigation: PTI
 Type: spec_store_bypass
   mitigation: Speculative Store Bypass disabled via prctl and seccomp
 Type: spectre_v1
   mitigation: usercopy/swapgs barriers and __user pointer sanitization
 Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, IBRS_FW,
   STIBP: conditional, RSB filling
 Type: srbds mitigation: Microcode
 Type: tsx_async_abort status: Not affected
Graphics:
 Device-1: Intel HD Graphics 620 vendor: Lenovo driver: i915 v: kernel ports:
   active: DP-1,eDP-1 empty: HDMI-A-1,HDMI-A-2 bus-ID: 00:02.0
   chip-ID: 8086:5916 class-ID: 0300
 Device-2: NVIDIA GM108M [GeForce 920MX] vendor: Lenovo driver: nvidia
   v: 510.60.02 alternate: nouveau,nvidia_drm pcie: gen: 1 speed: 2.5 GT/s
   lanes: 4 link-max: gen: 3 speed: 8 GT/s bus-ID: 03:00.0 chip-ID: 10de:134f
   class-ID: 0302
 Device-3: Chicony EasyCamera type: USB driver: uvcvideo bus-ID: 1-4:3
   chip-ID: 04f2:b57d class-ID: 0e02 serial: <filter>
 Display: x11 server: X.Org v: 1.21.1.3 compositor: kwin_x11 driver: X:
   loaded: modesetting,nvidia gpu: i915 display-ID: :0 screens: 1
 Screen-1: 0 s-res: 3520x1080 s-dpi: 97 s-size: 926x284mm (36.46x11.18")
   s-diag: 969mm (38.13")
 Monitor-1: DP-1 pos: primary,top-left model: 185W_LCD_TV built: 2000
   res: 1920x1080 hz: 60 dpi: 36 size: 1360x768mm (53.54x30.24")
   diag: 793mm (31.2") ratio: 16:9 modes: max: 1360x768 min: 640x480
 Monitor-2: eDP-1 pos: primary,bottom-r model: BOE Display 0x0698
   built: 2015 res: 1600x900 hz: 60 dpi: 132 gamma: 1.2
   size: 309x173mm (12.17x6.81") diag: 354mm (13.9") ratio: 16:9
   modes: 1366x768
 OpenGL: renderer: Mesa Intel HD Graphics 620 (KBL GT2) v: 4.6 Mesa 21.3.8
   direct render: Yes

Drives:
 Local Storage: total: 372.62 GiB used: 300.08 GiB (80.5%)
 SMART Message: Unable to run smartctl. Root privileges required.
 ID-1: /dev/sda maj-min: 8:0 vendor: Kingston model: SA400S37240G
   size: 223.57 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
   type: SSD serial: <filter> rev: 0102 scheme: GPT
 ID-2: /dev/sdb maj-min: 8:16 vendor: Seagate model: ST9160412AS
   size: 149.05 GiB block-size: physical: 512 B logical: 512 B speed: 3.0 Gb/s
   type: HDD rpm: 7200 serial: <filter> rev: HPM1 scheme: MB

 Thanks in advance.

Tags (3)
0 Kudos
1 Solution

Accepted Solutions
bluefirestorm
Champion
Champion

If the Manjaro host has kcompactd running have a look at this thread
https://communities.vmware.com/t5/VMware-Workstation-Pro/VMWare-workstation-in-a-fistfight-with-Linu...

Otherwise, regarding the Windows 11 VM, the vmx configuration text you pasted does not appear to have virtual TPM for the Windows 11 VM.
Starting with version 14.x, you can add a virtual TPM device to a VM, but the requirement is that VM has to be encrypted; and as a result the vmx configuration file and virtual disk of the VM will also be encrypted. For encrypted virtual disk, you should use preallocated because the virtual disk cannot be shrunk once it is encrypted (i.e. writing zeroes from within the VM will result in non-zero values). After you encrypt the VM, add the virtual TPM using the "Add hardware wizard".

With 16.2.x and newer, there is an experimental way to add a virtual TPM without encrypting the vmx configuration file and virtual disks (at least not entirely). Since it is experimental there are issues (such as difficult to remove, cannot use in another host, etc). To use the experimental method for vTPM, shut down the VM add the following line to the vmx configuration

managedVM.autoAddvTPM = "software"

Close the VMware Workstation UI and open again after adding the vmx line and the virtual TPM will be added automatically.

I haven't tried the experimental method on Linux host but tried it on a Windows 11 host.

These lines are not necessary in the vmx configuration file unless you really need them to use the Windows 11 VM. The comments below each line is the equivalent GUI name and the scenario that requires these settings to be enabled.

vvtd.enable = "TRUE"
# Virtualize IOMMU (IO memory management unit in Processors
# You want to run VBS inside Windows 11 VM

vhv.enable = "TRUE"
# Virtualize Intel VT-x/EPT or AMD-V/RVI
# You want to run Hyper-V or WSL2 inside the VM or run another VM inside this VM.

vpmc.enable = "TRUE"
# Virtualize CPU performance counters
# You have some software that require virtualised counters to make accurate measurement of performance of software running inside the VM.

View solution in original post

0 Kudos
6 Replies
scott28tt
VMware Employee
VMware Employee

Spoilers are great for dumping loads of text into, making the thread easier to scroll, to add a spoiler click the icon on the toolbar of a triangle with an exclamation mark inside it.

See the difference:

Spoiler
#!/usr/bin/vmware
.encoding = "UTF-8"
config.version = "8"
virtualHW.version = "19"
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 11.nvram"
virtualHW.productCompatibility = "hosted"
powerType.powerOff = "soft"
powerType.powerOn = "soft"
powerType.suspend = "soft"
powerType.reset = "soft"
displayName = "Windows 11"
usb.vbluetooth.startConnected = "TRUE"
firmware = "efi"
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 = "2"
memsize = "8192"
mem.hotadd = "TRUE"
sata0.present = "TRUE"
nvme0.present = "TRUE"
nvme0:0.fileName = "DISK.vmdk"
sata0:1.deviceType = "cdrom-image"
sata0:1.fileName = "/run/media/myms/ventoy/Windows(11).iso"
sata0:1.present = "TRUE"
usb.present = "TRUE"
ehci.present = "TRUE"
usb_xhci.present = "TRUE"
svga.graphicsMemoryKB = "4194304"
ethernet0.connectionType = "nat"
ethernet0.addressType = "generated"
ethernet0.virtualDev = "e1000e"
serial0.fileType = "thinprint"
serial0.fileName = "thinprint"
ethernet0.present = "TRUE"
serial0.present = "TRUE"
extendedConfigFile = "Windows 11.vmxf"
floppy0.present = "FALSE"
numa.autosize.cookie = "40022"
numa.autosize.vcpu.maxPerVirtualNode = "4"
uuid.bios = "56 4d 56 98 f1 1d a6 96-39 b3 06 97 9d 9b 9e 8c"
uuid.location = "56 4d 56 98 f1 1d a6 96-39 b3 06 97 9d 9b 9e 8c"
vm.genid = "2574486509314956863"
vm.genidX = "7458366503585389019"
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"
sata0.pciSlotNumber = "35"
nvme0.pciSlotNumber = "224"
svga.vramSize = "268435456"
vmotion.checkpointFBSize = "4194304"
vmotion.checkpointSVGAPrimarySize = "268435456"
vmotion.svga.mobMaxSize = "268435456"
vmotion.svga.graphicsMemoryKB = "262144"
vmotion.svga.supports3D = "1"
vmotion.svga.baseCapsLevel = "9"
vmotion.svga.maxPointSize = "189"
vmotion.svga.maxTextureSize = "16384"
vmotion.svga.maxVolumeExtent = "2048"
vmotion.svga.maxTextureAnisotropy = "16"
vmotion.svga.lineStipple = "1"
vmotion.svga.dxMaxConstantBuffers = "14"
vmotion.svga.dxProvokingVertex = "1"
vmotion.svga.sm41 = "1"
vmotion.svga.multisample2x = "1"
vmotion.svga.multisample4x = "1"
vmotion.svga.msFullQuality = "1"
vmotion.svga.logicOps = "1"
vmotion.svga.bc67 = "9"
vmotion.svga.sm5 = "1"
vmotion.svga.multisample8x = "1"
vmotion.svga.logicBlendOps = "1"
ethernet0.generatedAddress = "00:0c:29:9b:9e:8c"
ethernet0.generatedAddressOffset = "0"
vmci0.id = "-1650745716"
monitor.phys_bits_used = "45"
cleanShutdown = "FALSE"
softPowerOff = "FALSE"
usb:1.speed = "2"
usb:1.present = "TRUE"
usb:1.deviceType = "hub"
usb:1.port = "1"
usb:1.parent = "-1"
checkpoint.vmState = ""
tools.remindInstall = "FALSE"
vvtd.enable = "TRUE"
vhv.enable = "TRUE"
vpmc.enable = "TRUE"
sata0:1.startConnected = "FALSE"
gui.lastPoweredViewMode = "fullscreen"
toolsInstallManager.lastInstallError = "0"
svga.guestBackedPrimaryAware = "TRUE"
toolsInstallManager.updateCounter = "1"
guestInfo.detailed.data = "architecture='X86' bitness='64' buildNumber='22000' distroName='Windows' distroVersion='10.0' familyName='Windows' kernelVersion='22000.318' prettyName='Windows 10 Pro, 64-bit (Build 22000.318)'"
isolation.tools.hgfs.disable = "FALSE"
sharedFolder0.present = "TRUE"
sharedFolder0.enabled = "TRUE"
sharedFolder0.readAccess = "TRUE"
sharedFolder0.writeAccess = "TRUE"
sharedFolder0.hostPath = "/"
sharedFolder0.guestName = "ROOT"
sharedFolder0.expiration = "never"
sharedFolder.maxNum = "1"
usb.generic.autoconnect = "FALSE"
usb.generic.allowHID = "TRUE"
serial0.startConnected = "FALSE"
nvme0:0.present = "TRUE"
usb_xhci:4.present = "TRUE"
usb_xhci:4.deviceType = "hid"
usb_xhci:4.port = "4"
usb_xhci:4.parent = "-1"

-------------------------------------------------------------------------------------------------------------------------------------------------------------

Although I am a VMware employee I contribute to VMware Communities voluntarily (ie. not in any official capacity)
VMware Training & Certification blog
0 Kudos
scott28tt
VMware Employee
VMware Employee

Oh, and you should expect a moderator to move your thread to the Workstation Pro area now that I’ve reported it.

 


-------------------------------------------------------------------------------------------------------------------------------------------------------------

Although I am a VMware employee I contribute to VMware Communities voluntarily (ie. not in any official capacity)
VMware Training & Certification blog
0 Kudos
YF-le
Contributor
Contributor

Done!

Thanks @scott28tt

bluefirestorm
Champion
Champion

If the Manjaro host has kcompactd running have a look at this thread
https://communities.vmware.com/t5/VMware-Workstation-Pro/VMWare-workstation-in-a-fistfight-with-Linu...

Otherwise, regarding the Windows 11 VM, the vmx configuration text you pasted does not appear to have virtual TPM for the Windows 11 VM.
Starting with version 14.x, you can add a virtual TPM device to a VM, but the requirement is that VM has to be encrypted; and as a result the vmx configuration file and virtual disk of the VM will also be encrypted. For encrypted virtual disk, you should use preallocated because the virtual disk cannot be shrunk once it is encrypted (i.e. writing zeroes from within the VM will result in non-zero values). After you encrypt the VM, add the virtual TPM using the "Add hardware wizard".

With 16.2.x and newer, there is an experimental way to add a virtual TPM without encrypting the vmx configuration file and virtual disks (at least not entirely). Since it is experimental there are issues (such as difficult to remove, cannot use in another host, etc). To use the experimental method for vTPM, shut down the VM add the following line to the vmx configuration

managedVM.autoAddvTPM = "software"

Close the VMware Workstation UI and open again after adding the vmx line and the virtual TPM will be added automatically.

I haven't tried the experimental method on Linux host but tried it on a Windows 11 host.

These lines are not necessary in the vmx configuration file unless you really need them to use the Windows 11 VM. The comments below each line is the equivalent GUI name and the scenario that requires these settings to be enabled.

vvtd.enable = "TRUE"
# Virtualize IOMMU (IO memory management unit in Processors
# You want to run VBS inside Windows 11 VM

vhv.enable = "TRUE"
# Virtualize Intel VT-x/EPT or AMD-V/RVI
# You want to run Hyper-V or WSL2 inside the VM or run another VM inside this VM.

vpmc.enable = "TRUE"
# Virtualize CPU performance counters
# You have some software that require virtualised counters to make accurate measurement of performance of software running inside the VM.

0 Kudos
YF-le
Contributor
Contributor

@bluefirestorm wrote:

If the Manjaro host has kcompactd running have a look at this thread
https://communities.vmware.com/t5/VMware-Workstation-Pro/VMWare-workstation-in-a-fistfight-with-Linu...


That fixed it, thanks.

0 Kudos
wila
Immortal
Immortal

blue,


@bluefirestorm wrote:

 

I haven't tried the experimental method on Linux host but tried it on a Windows 11 host.

as a FYI, the experimental autovTPM method doesn't work on Linux hosts.

See also my edit at 2022/01/24 near the bottom of the article: https://www.vimalin.com/blog/what-you-should-know-about-vmwares-experimental-vtpm/

--
Wil

 

 

| Author of Vimalin. The virtual machine Backup app for VMware Fusion, VMware Workstation and Player |
| More info at vimalin.com | Twitter @wilva
0 Kudos