I'm running a Ubuntu Server VM on a Windows 2008 R2 host, and I'm getting very poor I/O performance. See the following screenshot that shows my processes are severely I/O bound (i.e. 96.0% wait)
All I was doing was installing PostgreSQL. On the same VM but running on a Ubuntu host, the performance is fast. The machines are similarly spec'ed, though the Windows machine should have the advantage as it's running disks in a RAID 0 configuration.
Any pointers of what I can do to improve performance will be much appreciated.
The VM is Ubuntu Server 12.04 without a GUI. The VM settings are listed below.
- 1 GB memory
- PIIX3 chipset
- IO APIC
- Hardware clock in UTC time
- Absolute pointing device
- Execution cap 100%
- VT-x/AMD-V enabled
- Nested Paging enabled
- 12 MB video memory
- 1 Monitor
This is a development/testing VM and not a production VM, hence the unexciting specs. The configuration is good enough for playing with some small (~5GB) databases. For some reason, running this on a Ubuntu host seems to get much better performance than running it on a Windows 2008 R2 host with identical hardware.
Update-2 I've increased the RAM and CPU core count of the VM. We're now at 2GB RAM and 2 CPU cores. I'm still seeing slow performance, but the %wait has halved. No idea why increasing the CPU cores allocated has this effect (it's not CPU starved, but IO starved) but it does make the VM a little more usable. I'll probably move back to Ubuntu unless I can find a solution to this.