experimented on VMware Workstation 15.5.2 build-15785246
, other verisons may not work, no guaranteed.
C:\ProgramData\VMware\VMware Workstation\config.ini
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"
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.
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"
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"
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 greatlysvga.threadPollUS="1000"
: default:10000
,1000
to reduce latency, may be laggy due to overheadmks.vdpMinFrameDelayMS=
"0": default:28
svga.noThreadSleep="TRUE"
: default:FALSE
,TRUE
can hog one logical host CPU 100%, use with cautionsvga.readbackRegionComplexityLimit="512"
: default: "64",512
improves FPS of program inside VM
mks.vsync="1"
: default:1
,0
feels choppy, because vsync is offmks.allowAcceleratedRenderers="TRUE"
: default: "default", may allow to switch backend hw-acc renderermks.win32.timerResolution="500"
: default:0
mks.dx11.enableModernPresentation="TRUE"
: default:FALSE
,TRUE
feels laggy
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"
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"
here is the way i used to experiment hidden configs:
use
string
utility to extract ascii strings fromvmware-vmx.exe
orvmware-vmx-debug.exe
,then use
grep
andsort
to find strings which look like config (for example, strings contain.
)and then, put the config strings in to vmx, with wrong value, like
mks.forceDiscreteGPU=balabala
and boot the vm, vmware will pop up this invalid config with proper range, value type (number or text) and default value.
IDA pro may help, to analysis the code logics of config values (like branches of value -1, 0 ...)
feel free to experiment by yourself.
for now, i only add this line to .vmx and works perfectly on 16 currently ;)
(i was looking for some configs vsync or fps limiter related and found this worked)