You can count me as one of those people who just doesn't like to work on virtual machines (VMs). Virtual PC, VMware, Virtual Server, whatever--it doesn't seem to matter. I just haven't had that much fun trying to get my VMs to really go fast. This performance problem has always been a sore subject with me because I really like the idea of VMs. By using VMs, you can try lots of SQL Server features that you might otherwise put off because of a lack of resources. For example, one of the things I use VMs for is building SQL Server clusters. (For information about how to implement clustering with VMs, see Michael Otey's WindowsITPro article "Virtual Server 2005 Cluster Setup Kit." think of myself as pretty technically savvy, and in the past, I've applied a few tips to juice up my VMs but still haven't gotten them working at the speed I felt I needed.
Because of my ongoing VM conflict, I was delighted recently when I met Amit Marlov, Windows Client and Virtual PC Regional Director for Microsoft Israel. Amit is especially adept at tuning Microsoft Virtual PC images. I was instantly interested in his work and got the URL for his tips and tricks site. Of course, my enthusiasm faded when I realized it was all in Hebrew.
However, I relentlessly bugged Amit for translations of his best tips, which I've started using. His tips are written for Windows Virtual PC and Virtual Server but should serve you well on VMware also. Here are five tips for you to try.
Tip 1: Don't starve your host OS of RAM.
You might think giving a VM lots of RAM will help it, but performance won't improve if the VM is robbing RAM from the host. Be sure you allocate less than half of your physical memory to your VM.
Tip 2: Exclude VMs from antivirus screening.
Make sure your antivirus and antispyware programs are excluding your VM software processes (e.g., Virtual PC.exe) and files (e.g., virtual hard drives, settings files).
Tip 3: Disable paging of executive components.
Disable the Windows Paging Executive on your host workstation and VM so that Windows executive components never get paged. You can disable the Paging Executive only by editing the registry, which you must do at your own risk and only after backing up your registry with the Windows backup utility (by selecting System State). You'll need to change the HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ DisablePagingExecutive key from 0 to 1.
Tip 4: Make the most of defragmentation.
Defragment your host machine and defragment and compact your VMs. Defragmenting always minimizes disk I/O, and compacting your VM will result in a performance increase. A slimmer machine will consume less RAM, leaving more RAM for the host system cache.
Tip 5: Separate your VM.
This one isn't from Amit, but I'm sure he'll concur: Whenever possible, put your VM on a separate physical hard drive. Doing so will reduce disk contention between your host and VM.
If you have any comments or questions when you try these tips, feel free to contact Amit at [email protected]. I'm still in the process of balancing everything to optimize all my VMs (especially the RAM-allocation settings), but I must say that since I implemented these tips, things are running noticeably better. Try these tips yourself; they might be the push you need to give a VM another shot.