VmWare Server Performance Tuning

Here are some tips we have gleaned from the web for tuning the performance of a Windows guest on a Linux (typically Centos5) host:

Context: We typically only run one Windows guest virtual machine on one of our Linux business servers to allow our clients to continue using their legacy Windows applications.

Please read the [source]
for each tip to fully understand the implications of what the tip does.


1. Removing timeout/paging errors in Windows Event Viewer for vmscsi device:

   In the Virtual Machine Guest:
   1. In the registry, go to HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Disk.
   2. Click Edit/Add value.
   3. Set the value name to TimeOutValue.
   4. Set the data type to REG_DWORD.
   5. Set the data to 0x03c hex (or 60 decimal).
   6. Reboot the virtual machine.
[source]

2. Disable the NTFS Last Access Time Stamp:

   In the Virtual Machine Guest:
  
1. In the registry go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem.
   2. Click Edit/Add value.
   3. Set the value name to NtfsDisableLastAccessUpdate.
   4. Set the data type to REG_DWORD.
   5. Set the data to 1 (Enable)
   6. Reboot the virtual machine.
[source]

3. The following can be entered into the Virtual Machine's .vmx file:
 
MemTrimRate = "0"
sched.mem.pshare.enable = "FALSE"
MemAllowAutoScaleDown = "FALSE"
 
a. MemTrimRate = "0" or 'Disable Memory Page Trimming' in the Virtual Machine Settings (under VM 'Advanced' in Vmware Server Console) - This seemed to have a big impact.
[source]

b. Set sched.mem.pshare.enable = "FALSE" . Use this only if you are are running only one virtual machine otherwise this may work against you. Setting this to true is designed to efficiently manage memory between virtual machines. - not needed when you only have one running [source]
 
c. MemAllowAutoScaleDown = "FALSE" 
 
4. Disable parallel and serial ports in the virtual machines, if you don't need them.
 
5. Pre-allocate the disk space when you create the machine otherwise it will do it when the machine is running. 
 
6. Disable snapshots if you don't need them. 
 
7. Give the Vmware server enough memory so that it can run the guest all in memory
 
8. But tell VMware not to hold all the Memory allocated to the VMware guest in real memory.
[source