Optimize – VMWare Workstation

This post will get updated with VMWare Workstation optimization best practices I’ve come across.

Reference environment used for testing

IBM DS4500 (8TB of RAID 5 and RAID 1)
IBM BladeCenter Attached via dual path 2Gb Fibre Channel

  • 2x Dual Core AMD 2200 processors
  • 14GB RAM
  • 70GB Local Mirrored Disk

Virtual Machine Disk Rules

  • Each VM should reside on it’s own seperate disk
  • Disk provisioned to the host should be provisioned across multiple arrays (internal arrays) spread across multiple controllers.
  • If using basic disks perform storage alignment
  • Never use Dynamic Disks to combine LUNs of a different size. This technique is known as LUN concatenation and will lead to significant disk performance issues. Disks created with this technique will show up as “spanned” disks.
  • If you do choose to combine LUNs using Dynamic Disk always use LUNs of the same size. This will allow striping across all LUNs thus creating a “striped” disk.

Virtual Machine Host Server Memory Rules

32 bit OS – Memory Limit 32GB with PAE enabled

64 bit OS – Memory Limit 2TB

  • Each processes limited by default to 2GB of memory.  This can be extended to 3GB by setting the /3GB flag in the boot.ini file

Complete list of Windows Operating Systems and their respective memory limits: http://msdn.microsoft.com/en-us/library/aa366778.aspx

Post Installation Tasks

Defragment everything…

  • Internal VM disk
  • VM disk (Edit VM -> Disk -> Utilities -> Defragment)
  • Physical Disk (Computer Management -> Disk Manager -> Defragment Disk)


Windows 2003 Server 64bit Edition – LUN Alignment

Pre-requisites: Disk must be “Basic”.  Dynamic disks are not supported.

Configure Disk Alignment Value:

  1. Launch command window start -> run “cmd”
  2. type “diskpart”
  3. list disk
  4. select disk <disk number>
  5. list disk (confirm an * is next to the disk you selected)
  6. list partition (NO partitions should be visible. If partitions are listed then the disk may contain production data)
  7. create partition primary align=<alignment value ex: 32, 64, 128>
  8. assign letter=<free drive letter ex: G>
  9. list partition
  10. exit

Example configuration output:
Microsoft DiskPart version 5.2.3790.3959
Copyright (C) 1999-2001 Microsoft Corporation.
On computer: Test1
DISKPART> list disk
Disk ###  Status      Size     Free     Dyn  Gpt
——–  ———-  ——-  ——-  —  —
Disk 5    Online        60 GB      0 B
DISKPART> select disk 5
Disk 5 is now the selected disk.
DISKPART> list partition
Partition ###  Type              Size     Offset
————-  —————-  ——-  ——-
Partition 1    Primary             60 GB   128 KB

Format Disk:

  1. Start -> run “diskmgmt.msc”
  2. Change the allocation size to match the segment size of the associated LUN.  A common segment size is 64KB
  3. Click Format