Tag Archives: VM

VMware Performance Enhancing Tweaks (Over-the-Counter Solutions)

I have been using VMware virtualization for quite a few years now, and even though it is generally fast and reliable virtualization platform, it does require some extra tuning to improve its performance. Here is a brief collection of tweaks that I personally use on Windows and Mac OS to improve I/O performance of VMware virtual machines. These tweaks have become particularly useful in the past couple of years, with larger amounts of available RAM in computers and desire to reduce unnecessary write operations to SSD drives, such as memory swap files.

In order to apply these tweaks you need to add the following settings either to your virtual machine .VMX file, or if you like it globally then to VMware settings.ini file. Settings.ini file is located at “C:\ProgramData\VMware\VMware Workstation\” or “C:\Documents and Settings\All Users\VMware\VMware Workstation\” folders, depending on your operating system. VMware Fusion Config files are located in “/Users/username/Library/Preferences/VMware Fusion/preferences” and “/Users/username/Library/Preferences/VMware Fusion/config” folders.

Tweak: Disable memory swap files .vmem files

mainMem.useNamedFile = "FALSE"
Unfortunately this parameter does not work for VMware Player, as it always creates virtual machine’s full memory swap file.
For VMware Fusion on Mac and Linux instead of mainMem.useNamedFile you have to set mainMem.backing flag.
mainMem.backing = "swap"

Tweak: Choose the right disk controller and specify SSD

Instead of the latest SATA AHCI controller choose LSI Logic SAS controller with SCSI disk for Windows guest OS, or PVSCSI for other types of OS. Unfortunately SATA AHCI on VMware has the lowest performance out of the three controllers and highest CPU overhead (see the references on the topic at the end). In addition to choosing the right controller, if your host disk is SSD you can explicitly specify the disk type as SSD to guest OS.
scsi0:0.virtualSSD = 1

Tweak: Disable log files for VM

logging = "FALSE"
Alternatively you can specify a different location to store the log file, if you ever need them:
log.filename = "c:\Windows\Temp\vm1.log"

Tweak: Other Disk & Memory I/O Performance Optimization

Disable memory trimming:
MemTrimRate = "0"
Disable page sharing:
sched.mem.pshare.enable = "FALSE"
Disable scale down of memory allocation:
MemAllowAutoScaleDown = "FALSE"
Memory allocation configuration:
prefvmx.useRecommendedLockedMemSize = "TRUE"
prefvmx.minVmMemPct = "100" (optional)

Tweak: Disabling Snapshots

Disable snapshots if you are not using them and prefer full backups:
snapshot.disabled = "TRUE"

Tweak: Disable Unity Mode

Unity might be a great feature for running virtual desktops operating systems, but it is not the most useful for virtualizing server OS. An annoying sign of enabled unity is GuestAppsCache or caches folder with a large number of files and subfolders. In order to disable it for your VM add the following lines:
isolation.tools.unity.disable = "TRUE"
unity.allowCompositingInGuest = "FALSE"
unity.enableLaunchMenu = "FALSE"
unity.showBadges = "FALSE"
unity.showBorders = "FALSE"
unity.wasCapable = "FALSE"

Tweak: MacBook Retina Display Optimization

Disable automatic fitting to window:
pref.autoFitGuestToWindow = "FALSE"
Set a different resolution (or in user interface select VM – Settings – Display – uncheck ‘Use full resolution for Retina display’):
gui.applyHostDisplayScalingToGuest = "FALSE"
When in full-screen mode, there is a couple of options to control how guest is rendered:
pref.autoFitFullScreen = "stretchGuestToHost" or pref.autoFitFullScreen = "fitHostToGuest"


Merging VMware Fusion/Workstation Virtual Split Disk into a Single VMDK

Every time you create a new virtual machine in VMware Fusion/Workstation, it is always created with a virtual disk (VMDK) split up into 2Gb files. One of the main reasons for that, I guess would be a limitation of FAT-32 file system – maximum file size of 2Gb. However, if you are no longer using FAT file system and would like to convert the default vmdk into one single pre-allocated file, here is what you can do.

In order to convert the existing virtual disk to a single .vmdk file you would need to use a console application ‘VMware Virtual Disk Manager’ located in '/Library/Application Support/VMWare Fusion' folder.

Follow these two steps:

– open your Mac terminal console (Applications -> Utilities -> Terminal) and navigate to the folder with your VMware disk image

– from that folder run the following command (typing VMware’s diskmanager path with backslash prefixes for space):

/Library/Application\ Support/VMWare\ Fusion/vmware-diskmanager -r originalSplitDisk.vmdk -t 0 targetSingleDisk.vmdk

If you are running VMware Workstation on Windows, you can use the same command with the only difference that vmware-vdiskmanager.exe would be located in a folder where VMware Workstation was installed, e.g.: C:\Program Files\VMware\VMware Workstation.

Documentation and other examples for VMware Virtual Disk Manager use:

Converting Physical x64 Machine to Virtual (Windows 7/Server 2008 R2): Microsoft – 1 : VMware – 0

Being an old fan of VMware products (in particular, the fact that I can run VMware VMs on my MacBook, as well as on Wintel desktop), I found myself utterly disappointed this week, when I tried to convert my physical Windows Server 2008 R2 x64 into a virtual instance.

The latest version of VMware Converter kept crashing on me at the start of the conversion process with the error: “Unable to create a VSS snapshot of the source volume(s).”
More disappointingly, even according to press releases VMware vCenter Converter – the latest and greatest version of VMware Converter, officially doesn’t support Windows 7 or Windows Server 2008 R2 editions (its latest version at the moment is 4.0.1 and dated 2009-12-08).

After a few failed attempts with VMware, I decided to look at Microsoft offerings. Even though, I couldn’t find an official Microsoft converter product, I found something better – a Sysinternals utility Disk2vhd, which can create a virtual hard disk (VHD) out of running physical image.

The most impressive part that the whole process of converting my running 60G RAID-0 hard drive array took only a couple of minutes, with minimal configuration effort – no heavy installation or complex user-interface interactions. All I had to do is select a check box with the volume(s), which needs to be converted and that’s it. Systinternals delivered an impressive utility once again! Kudos to Microsoft for keeping Sysinternals brand alive and bringing new useful tools.