Skip to content

Instantly share code, notes, and snippets.

@cocafe
Last active October 13, 2025 13:55
Show Gist options
  • Select an option

  • Save cocafe/d3b4e286af68925d45fcb2c7337cf673 to your computer and use it in GitHub Desktop.

Select an option

Save cocafe/d3b4e286af68925d45fcb2c7337cf673 to your computer and use it in GitHub Desktop.

VMware VMX Notes, Performance Tweaks, Interactivity Improvements

experimented on VMware Workstation 15.5.2 build-15785246, other verisons may not work, no guaranteed.


global config for all VMs

C:\ProgramData\VMware\VMware Workstation\config.ini

resume/suspend VM asap

if you have mere host RAM amount, do not use prefvmx.minVmMemPct=100

# add to global config to apply to all VMs
prefvmx.minVmMemPct = "100"
mainMem.useNamedFile = "FALSE"
mainMem.partialLazySave = "FALSE"
mainMem.partialLazyRestore = "FALSE"

spoof guest OS that it's inside real machine

these tweaks will break VM tools ability to communicate with host, but it can actually fix weird random freezes since Workstation 12+, confirmed.

monitor_control.virtual_rdtsc = "false"
monitor_control.restrict_backdoor = "true"
isolation.tools.getPtrLocation.disable = "true"
isolation.tools.setPtrLocation.disable = "true"
isolation.tools.setVersion.disable = "true"
isolation.tools.getVersion.disable = "true"
monitor_control.disable_directexec = "true"

update:

random freezes:
if a picture or video is in Windows clip-paste buffer, then vmware is likely to freeze.
somebody reported this in vmware community already, but it looks like no fix right now (vmware 16).
just closed vmware window forcely and Ctrl+C some plain texts, then open vmware again. this will fix that freeze.
configs above accidentally fix this freeze by disabling vmware tool (clip-paste sharing) in guest OS.

spoof guest OS - more

monitor_control.disable_directexec = "true"
monitor_control.disable_chksimd = "true"
monitor_control.disable_ntreloc = "true"
monitor_control.disable_selfmod = "true"
monitor_control.disable_reloc = "true"
monitor_control.disable_btinout = "true"
monitor_control.disable_btmemspace = "true"
monitor_control.disable_btpriv = "true"
monitor_control.disable_btseg = "true"

spoof macOS guest

board-id.reflectHost = "FALSE"
board-id = "Mac-BE088AF8C5EB4FA2"
hw.model.reflectHost = "FALSE"
hw.model = "iMac18,3"
serialNumber.reflectHost = "FALSE"
serialNumber = "C02TC4YKJ1GJ"
smbios.reflectHost = "FALSE"
efi.nvram.var.ROM.reflectHost = "FALSE"
efi.nvram.var.MLB.reflectHost = "FALSE"
efi.nvram.var.ROM = "3c0754a2f9be"

improve interactivity (greatly)

confirmed on hosts with GTX1070 and RX580, win7 and ubuntu 18.04 guests.

interactive response latency is reduced greatly, no more choppy guest screen.

these tweaks probably add some overheads to host machine.

use with caution if host machine has poor performance (not tested yet).

mks.lowCompositingFPS="60"
mks.maxCompositingFPS="1000"
mks.skipHookTimeoutCheck="TRUE"
mks.updateCoalescePeriodUS="0"
svga.readbackRegionComplexityLimit="512"
mks.requireHardwareRenderer="TRUE"
  • mks.lowCompositingFPS="60" : default: 10, lower limit?
  • mks.maxCompositingFPS="1000" : default: 100
  • mks.skipHookTimeoutCheck="TRUE" : default: FALSE
  • mks.updateCoalescePeriodUS="0" : default: 16666" (16.666ms, 60Hz), 0 : latency reduces greatly
  • svga.threadPollUS="1000" : default: 10000, 1000 to reduce latency, may be laggy due to overhead
  • mks.vdpMinFrameDelayMS="0" : default: 28
  • svga.noThreadSleep="TRUE" : default: FALSE, TRUE can hog one logical host CPU 100%, use with caution
  • svga.readbackRegionComplexityLimit="512" : default: "64", 512 improves FPS of program inside VM

other tweaks that may affect interactivity

  • mks.vsync="1": default: 1, 0 feels choppy, because vsync is off
  • mks.allowAcceleratedRenderers="TRUE": default: "default", may allow to switch backend hw-acc renderer
  • mks.win32.timerResolution="500": default: 0
  • mks.dx11.enableModernPresentation="TRUE": default: FALSE, TRUE feels laggy

placebo thing

this tweak can be found while googling improve vmware interactive things, but it is deprecated in modern Workstation

# default: 4, 100/4=25hz, maximum: 1
svga.maxChangeTick = "1"

tweaks that did not confirmed

svga.maxFullscreenRefreshTick= # default: "-1" ???
svga.threadPollPendingFencesUS= # default: "100"
svga.maxFenceAgeUS= # default: "100000"
svga.traceFBCoaleseUS= # default: "10000"
mks.dx11.waitForQueryYieldMS= #default: "1" 
mks.forceDiscreteGPU= #default: "FALSE"
@cocafe
Copy link
Author

cocafe commented Aug 28, 2025

mks.enableDX11Renderer = "TRUE"
mks.enableDX12Renderer = "TRUE"

here we should choose a backend render, instead of set both 'TRUE', i find that vmware17 is using Vulkan backend (mks.enableVulkanRenderer ) now in the guest log.
2025-08-28T05:03:36.684Z In(05) mks ISBRendererComm: Sandbox Renderer: VKRenderer

@richardm1
Copy link

On my [linux] host w/ Windows VM the new Vulkan renderer is much more performant. Unless you're forcing d3d it should default to Vulkan now. I needed:

mks.vk.allowUnsupportedDevices = "TRUE"

Then check mksSandbox.log for the correct GPU string for your system. Mine is:

2025-10-13T12:32:55.160Z In(05) mks  Vulkan Renderer:   Name: 'AMD Radeon RX 570 Series (RADV POLARIS10)'

Place it into the VM's vmx file:

mks.vk.ForceDevice = "AMD Radeon RX 570 Series (RADV POLARIS10)"

To help with graphics/sound stutter within the VM I've set the Windows system timer resolution to the minimum. I used Process Lasso and there's multiple tools for this:

image

This might have a negative overall performance impact (need to test) but it definitely cleaned up the stutter.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment