Is paravirtualization evil?

I have an VMWare ESX Server v3.5 with a few virtualized Debian Lenny VMs (kernel 2.6.22 with vmi) running Apache Tomcat 5.5. I enabled paravirtualization, and Disk IO increased from about 240MB/s to 380MB/s, making me a happy admin.

The problem now is that my apache tomcat becomes deadlocked during startup, running with 200% CPU (I have 2 CPUS assigned to the VM), and don't know how to get both: A stable system and a fast system.

I somewhere heared that paravirtualization is legacy anyway and won't be available on newer ESX servers. Is there a replacement for this seemingly performance-improving option, or is it discontinued becauses it is just unstable? What is the state of paravirtualization? Should I ignore it completely?

Thanks for all answers in advance.


Solution 1:

Para-virtualization is not going anywhere. The future direction of all Hypervisor platforms is to combine the benefits of hardware virtualization (for both CPU's and IO subsystems) with para-virtualization where that is possible. VMware now have extensive support for para-virtualized drivers for most guests, Hyper-V has always used paravirtualization extensively as has Xen.

Given that you are doing this on ESX 3.5 I'd suggest that you test the configuration on ESX(i) 4.1 and see if the problem has been resolved there.

Paravirtualization involves some trade offs - a key one is that there are components (at the driver\kernel level) re-written to enable the Hypervisor to more directly manage some aspect of the Guest's behaviour but this also runs the risk of introducing bugs, and it looks like you may have found one.

Solution 2:

In respect to VMware, yes they discontinue VMI support, however if you noticed they introduced paravirtualized i/o and network drivers in ESX(i) v4.x. So, they continue to use paravirtualization to improve performance, they simply do it in a different way.