VMware Communities

Speeding up development VM


I'm trying to optimize a development machine. I'm hoping someone here could help me get the absolute top performance out of my setup -- this is something I'm willing to spend time on as I will be working on this machine every day for at least the next two years, and a little slow performance will cost me a lot of money. Because of this I have made some preparations in terms of hardware to support fast performance, so let me tell you what I have:

The basic computer is a Dell Inspiron M6500 with two harddrives. One Samsung PM800 64 GB SSD drive, one Momentus XT 500 GB. It's a Core 5i CPU running on two cores with hyper-threading, so 4 logical execution contexts exist. I have set up a dual-boot Windows 7 Ultimate/Ubuntu 10.10 with Grub. The Windows 7 is for emergency situations and possibly a little gaming. I gave it half the harddrive and Ubuntu the other half. The Momentus XT harddrive, I intend to use as storage of my virtual machines, but I still want the places that matter to be highly optimized for speedy IO/disk.

Currently I have two virtual machines in Workstation that I want to optimize disk access for, for IO -- and I want some advice as how to make this system extremely stable.

So, some data:

Listing 1:

root@xxx:/# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda6              23G  7.1G   15G  33% /
none                  3.9G  336K  3.9G   1% /dev
none                  4.0G  268K  4.0G   1% /dev/shm
none                  4.0G  128K  4.0G   1% /var/run
none                  4.0G     0  4.0G   0% /var/lock
/dev/sdb2             387G  105G  263G  29% /media/Ext4Data
/home/xyz/.Private     23G  7.1G   15G  33% /home/xyz
/dev/sdb1              73G  9.4G   64G  13% /media/Data

Listing 2:

root@xxx:/# mount
/dev/sda6 on / type ext4 (rw,errors=remount-ro,commit=0)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
/dev/sdb2 on /media/Ext4Data type ext4 (rw,nosuid,nodev,uhelper=udisks,user_xattr,commit=0)
none on /proc/fs/vmblock/mountPoint type vmblock (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
/home/xyz/.Private on /home/xyz type ecryptfs (ecryptfs_sig=ae82acaf940d1663,ecryptfs_fnek_sig=2229ad415c239a03,ecryptfs_cipher=aes,ecryptfs_key_bytes=16)
gvfs-fuse-daemon on /home/xyz/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=xyz)
/dev/sdb1 on /media/Data type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)

Listing 3:

root@xxx:/# fdisk -l

Disk /dev/sda: 64.0 GB, 64023257088 bytes
255 heads, 63 sectors/track, 7783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0faa21d8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           5       40131   de  Dell Utility
/dev/sda2   *           6          18      102400    7  HPFS/NTFS
Partition 2 does not end on cylinder boundary.
/dev/sda3              18        3922    31354880    7  HPFS/NTFS
/dev/sda4            3922        7784    31023105    f  W95 Ext'd (LBA)
/dev/sda5            3922        4650     5844103    7  HPFS/NTFS
/dev/sda6            4650        7649    24089600   83  Linux
/dev/sda7            7649        7784     1087488   82  Linux swap / Solaris

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x69d47aac

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        9485    76187238+   7  HPFS/NTFS
/dev/sdb2            9486       60802   412197888   83  Linux

On the Linux Host I will be doing some Erlang/Haskell/Ruby/Python development. I have no particularly big systems here, so the default compile times are alright, but tips and pointers are appreciated.

On the Windows VM I will be doing most of my C#/F# development. I want compile-times very low, which is why I'm writing this entry. I want to be able to modify the contents of this folder from both the host and the VM.

Currenty I have given the Windows VM a 60 GB large file preallocated disk. A added a shared folder, from host:/home/dev to "mklink /D C:\dev \\vmware-host\Shared Folders\dev" on the Windows VM. Hence, the C:\dev folder on the Windows VM is a directory junction to a network path. I have disabled ntfs-last-accessed and the anti-virus software running on the VM for that directory. As you see from Listing 2, row 2, sda6 is pointing to /, so /home/dev is on the SSD drive. Also, note the /home/xyz is a pointer to /home/xyz/.Private, which is encrypted, and as such I don't expect perf to be perfect.

As you can see in Listing 3, I have a partition on the SSD, called Linux imaginatively enough, that's 6 GB large and NTFS. I'm not really using it for anything, so I could re-format it.

I have turned off paging in the Windows VM, so it will really only read Windows- and Visual Studio-files from the Momentus XT disk where the virtual disk resides. This is good, as Momentus XT and its SLC-SSD should optimize reads by moving them into the SSD portion of the disk. Hence I get fast launch of programs I hope.

I would like you input on how to make the compile-times lower and the virtual machine faster.

0 Kudos
2 Replies


0 Kudos

I have seen your post when you first posted it but had no good ideas ...

we really need to see a vmware.log to learn details like WS-version, the VM-config and teh host config

after reading this again first ideas are:
do not use shared folders for best performance

need to see the log

Do you need support with a VMFS recovery problem ? - send a message via skype "sanbarrow"
I do not support Workstation 16 at this time ...

0 Kudos