Windows Server 2008 R2 Best Practices on VMware

I have a cluster of 2 VMware ESX 4.1 servers that I run Windows 2008 R2 virtual machines in.  Recently I’ve been looking into performance tuning, optimizing and reviewing best practices for deploying 2008 R2.  The following are some of the configurations I make to the operating system to tune as well as configuration changes on the VM settings.

Note:  This is a work in progress.

General

  • I always install with 2GB RAM and 2vCPU.  Then, after install, depending on working, I re-configure and leave at 2GB RAM and 2vCPU or bump it down to 1vCPU and monitor ESXTOP workload for CPU %RDY to see if I need to increase vCPU on this VM.

Windows Specific

  • Disable Pagefile
  • Small Memory Dump (256KB)
  • Power Options -> High Performance
  • Appearance -> Adjust for Best Performance

Windows Services Specific

  • Print Spooler – Manual & Stopped
  • DHCP Client – Manual & Stopped
  • Windows Search / Indexing – Manual & Stopped

Guest VM Settings Specific

  • Install VMware Tools
  • Disable Communication Ports (Serial/LPT) in BIOS as well as remove Floppy and other unnecessary hardware from VM and disable in BIOS.
  • VMXNET3 Network Adapter (Requires VMware tools to be installed)

VMware Performance Counters for Windows

A great feature VMware introduced through it’s vmtools package is the ability to monitor performance counters of VM specific information through Windows’ Performance Monitor (perfmon).VMware Performance Counters in Windows

This is particularly useful when troubleshooting within a Guest VM.

Other areas to look at when troubleshooting CPU performance for a Guest VM are ESXTOP (here’s a great resource for this), and Virtual Center’s Performance tab.