Speed up VMs hdd perfomance

3

1

I'm using VMware on my Lenovo R500 laptop for running developer enviroment (Win2003 server r2, Visual Studio 2008, SQL Server 2005). Everything runs fine except HDD, which is like 10x slower than on host os. Not really 10x, but a lot.

So, those are some ideas for speeding things up:

  • i have one spare 3,5" hdd, 7200 rpm. If I buy external USB2 case, put/copy/move whole VM onto it, and boot up VM from it, should it be faster than running VM from internal 2.5" 5200rpm hdd?
  • somehow map one partition from external 2.5" (USB2) drive to VM, and put swap file there. But in vmware, i cannot use external usb hdd as a new physical disk, i can put there just "regular" scsi hdd file.
  • buy SSD (crucial m225, if i recall, is cheap/fast). But thats not the option right now :(
  • all that solutions with external USB2 drives concerns me because of USB2 speed, which is significant lower than native speed of 3.5" hdd - 50MB/s (480 mbit usb2) vs 80MB (avarage read speed of seagate 7200.10 hdd). Will USB2 slow it down?

Edited:

  • eSata ExpressCard, connected to external hdd. Can I use this external hdd like physical disk in vmware?

Please, give me some recommendations and guidelines.

Also, i gave 2gb of RAM to VM, and only 1gb is used when i look at Task Manager. So i guess it's enough.

Hrvoje Hudo

Posted 2009-09-25T20:48:50.300

Reputation: 492

Answers

7

If you have the money, SSD will be the only noticeable difference. If you can add more RAM as well that will help, but SSDs will be the key to really speeding things up especially for VMWare or general virtualization.

I currently run VMWare Fusion running Windows 2k8 with VS2008, SQL2008, BizTalk 2009, etc. etc. on my MacBook Pro w/ 4GB of RAM and the disk is the only thing slowing everything down. It doesn't matter how fast a CPU you use as long as the data is on the slowest device, everything (RAM, Bus, CPU) has to wait for it to get the data.

An external USB connected drive will do nothing noticeable for you. Remember, that disk still has to spin up and get the data then send it via USB to the PCI bus on the motherboard. You've simply moved the problem from inside your laptop to the outside of your laptop.

The difference between 5400rpm and 7200rpm is barely noticeable at all. In all seriousness, if you want to see any difference in speeds, save some cash and get SSD. All other options are really just teasing you in the hopes things will be better, but I can guarantee you it won't be worth the time, money and effort in comparison to SSD.

osij2is

Posted 2009-09-25T20:48:50.300

Reputation: 1 937

Just wanted to update this; I upgraded my laptop and swapped the hard drive with a 256GB SSD. It's like my laptop sped up by 300%. My virtual Windows 7 instance boots in less than 10 seconds. Waking up from sleep, everything is instant. SSD is the only way to improve system speed. – osij2is – 2012-03-23T01:33:23.847

4

USB 2.0 is far worse a bottleneck than your internal 5k4 rpm HDD.

better upgrade your laptop HDD.

until then, you may apply certain NTFS tweaks to reduce disk thrashing. since you allocated 2 GB RAM, you might get away with disabling virtual memory (remember, if this doesn't work out, a fresh pagefile.sys is just a few mouse clicks away :).

Molly7244

Posted 2009-09-25T20:48:50.300

Reputation:

1Don't run a VM over USB, you will hate your life if you do. We used to keep our VMs on USB drives to make it easy to pass them around, etc. But trust me that this will only make the problem worse. – runako – 2009-09-25T21:38:17.207

1

The first thing to do to improve disk IO for the VM - if you haven't done it already - is run the defrag disk option from within VMware.

Dave Webb

Posted 2009-09-25T20:48:50.300

Reputation: 10 126

I'm doing that once a week – Hrvoje Hudo – 2009-09-26T11:52:22.573

1

Based on my experience I'd say the following are going to help the most:

  1. Ensure that the host machine has lots of RAM. Don't trust Task Manager; VMWare is crafty in its use of memory. If you are allocating 2GB to the VM, I'd ensure that the laptop has at least 4GB of memory, preferably more. Remember that your total system memory needs to be at least the amount allocated to the VM plus the amount the host needs, plus a buffer for all programs running in the host (i.e. VMWare itself, Firefox, etc.). Lack of sufficient host memory manifests in weird ways sometimes in VMs.

  2. Use a non-Windows OS to host the VM if at all possible. It sounds ridiculous, but running Windows in a VM is way faster in Linux than in Windows. You can try this quickly by getting one of the zillion Linux variants off the Web and installing VMWare Player there. In my experience, this sped up pretty much everything in the VM.

  3. Defrag the volume where your VM lives. Then defrag the VM's disk from inside the VM.

You might also turn off your virus scanner (if possible, just for VMWare's operations). This may or may not have an effect, but having McAfee check every write can't help at all.

runako

Posted 2009-09-25T20:48:50.300

Reputation: 205

Any benchmarks for Win (i'm using 7) Vs Linux as host? I'm having hard time believing that. – Hrvoje Hudo – 2009-09-26T11:53:44.960

I'm not using Win 7. But you don't have to take my word for it; you can get benchmarks on your own hardware within an hour or two, if you need to install Linux first. It was hard for me to believe too, but my results were consistent. – runako – 2009-09-27T03:51:22.323

1

A long standing advice for Virtual performance is to give the VM a separate HD. Not a separate partition, that doesn't help. Get 2 different disks inside your PC. Being Windows, both the host and the guest OS will constantly be using the disk. If that is the same disk, you see contention.

External disks over USB are not fast enough, but eSATA might work.

Henk

Posted 2009-09-25T20:48:50.300

Reputation: 477

Thanks for the advice on eSATA! I added it to my question, like another option. – Hrvoje Hudo – 2009-09-26T10:24:08.463