I use VMware on a daily basis, it is slow even though I have a brand new machine with 4 gigs of RAM.
How can I speed up my VMWare software? I know one bottle neck is my hard drive, it is a laptop so the hard drive isn't have the fastest RPM's.
- I am running Ubuntu Linux in VMware.
- I am using Eclipse, python, MySql and a few other light weight programs.
- The machine is a Lenovo T400 with a Centrino 2 processor.
- I am running VMWare Workstation 6.5.
Always, always, always pre-allocate your VMDKs! Also, if you can, partition your drive so that the virtual machines will have their own partition as close to the beginning (physically towards the outside of the platter) of the drive as possible, next to parts of your OS that will be written to (/var, swap, /home). If the host OS and VMDKs are all on one half of the platter, you've cut your seek time in half for most operations (static files are read once and then held in memory - take advantage of this!).
Changing out the CFQ for the anticipatory or deadline I/O schedulers may increase performance, depending your usage. Also, check out these kernel settings to optimize how your RAM is used:
And these for your I/O:
Your VM's will be competing heavily on IO. Be sure as to not cause IO starvation, especially for reads. When a process (and that includes VM's) cannot read data, the process will keep waiting until it does. Being able to read data is extremely important; more so than writing data, which will go into buffers in the first place anyway. You'll see this in your performance monitoring tool (like the various *tops) as high iowait values.
To help this, I agree with the previous poster to choose another scheduler. You'd have to try which one works our best for your workload, but deadline sound like a good choice for you.
I am curious as for how many VM's you run concurrently.
A couple of months back, I was building a FreeIPA setup for someone, with both the server and the client on my machine in VMware Workstation VM's. Slow as hell. Recently, I started using KVM and my performance trouble is solved. KVM makes the kernel a hypervisor itself, which means that the virtualization stuff takes place in ring 0 instead of in, say, ring 3. This means massive performance increases. I suggest you try it out.
One good way to speed up VMs is to place them on a separate physical disk. Since you're running on a laptop, you may have to look at getting an eSATA ExpressCard Controller. (I wouldn't bother with USB as the bandwidth just isn't there).
I was having similar issues on my development laptop and after moving to an eSATA setup, I'm very pleased.
When running everything off my single boot disk, I'd see very noticable performance degradation when running particular VMs. VMs running WinXP seemed to work fine, but the minute I powered on a Server2008 VM, the performance would noticably drop. After switching to an ExpressCard/eSATA setup, I was able to run all the VMs without issue.
The other advantage of using eSATA is that you can get a full-size external enclosure which lowers the cost of the drive significantly and increases your options. For example, you could put a 10k rpm drive in there for some really decent IO, or simply have terrabytes of space which you just couldn't get with a standard laptop configuration.
One thing to watch out for though is how your ExpressCard bus is actually implemented in the laptop. For some reason my setup peaks at 100Mb/s when I know the drive natively is capable of at least 200Mb/s..
Some computers have a virutalization option in the BIOS. Turning that on will help. I know my computer doesn't, but a coworker's does and it made a significant difference.