Tuesday, November 26, 2013

How to improve disk I/O performances with VMware Workstation

Even on a 2 GB RAM workstation (as mine) VMware virtual machines can run slowly. Too slowly sometimes.
This can depend on a large amount of factors but we can reduce the number to 4 critical issues:
  1. Antivirus real-time protection
    You probably run VMware Workstation on your everyday working computer, and you probably want to stay secure running an antivirus software. The most useful feature of any AV is the real-time protection, catching and monitoring I/O accesses of every process for suspicious activities.
    This feature can greatly impact on your VMs performances and should be fine-tuned for virtualization.
    So be sure to create an exclusion filter on your real-time protection settings for .vmdk (VMware virtual disk) and .vmem (VMware virtual memory) files. In this way countinous I/O operations on your virtual machines will not be hit by antivirus checking.
    Note: if you plan to run liveCD operating systems (like Knoppix) inside your VMs or simply often use CD images for installing new software, I highly recommend to exclude .iso files too from AV checking.
  2. HostOS disk fragmentation
    A really performance hitter for virtual machines is a fragmented host OS disk. VMs virtual disks are very large (4 GBs at minimum on the average) and are created by default as non preallocated. In other words your virtual disk grow as you install more software on the guest OS till reaching your defined disk limit.
    If you use only one physical disk for everyday work and VMs storing, you probably will use space around a growing virtual disk, obliging your host OS to fragment virtual machines more and more.
    So be sure to:
    • Create a dedicated partition for virtual machines only
    • Create guest OSes virtual disks with Allocate all disk space now option
    • Schedule a daily De-fragmentation for your virtual machines directories (maybe at launch time or during the night)
  3. Memory trimming
    Workstation checks which part of the guest OS virtual memory is not used and allocates it back to the host OS. This permits to have more concurrent virtual machines running but everytime the guest OS asks back for its memory it suffers a performance degradation. So, if you have enough free RAM for all planned concurrent VMs, be sure to disable memory trimming for guest OSes adding the following line to the virtual machine configuration (.vmx) file:
    MemTrimRate=0
    Note: Memory trimming can be disabled through GUI since Workstation 6.0.
  4. Page sharing (quoted from VMware documentation)
    VMware uses a page sharing technique to allow guest memory pages with identical contents to be stored as a single copy-on-write page. Page sharing decreases host memory usage, but consumes system resources, potentially including I/O bandwidth. You may want to avoid this overhead for guests for which host memory is plentiful and I/O latency is important. To disable page sharing, add the following line to the virtual machine configuration (.vmx) file:
    sched.mem.pshare.enable=FALSE option
These suggestions will work well for every VMware Workstation 5.x and Player 1.x since both share same engine.

No comments: