One of the most basic questions that arise when creating a virtual machine is whether to create it as a paravirtualized system or a HVM (Hardware Virtualized Machine) virtual machine.  Each virtualization machine type has its own advantages and disadvantages.  Let’s look at the benefits of each type of virtual machine.


The HVM virtual machine has the benefit of hardware acceleration.  With hardware acceleration, the Intel or AMD chip that is running on the host hardware will intercept some of the system calls that are doing specific operations and process them in hardware, rather than in software.  The latest chips have focused on the most heavily used system calls; the virtual to physical memory translations.  This is a huge benefit, since these calls are done so frequently.  Newer chips in the works will be extending this to do I/O and network calls as well.

The down side is that in the HVM model, most I/O and network operations are currently done in software, with is problematic, since all of the code to do an I/O operation is done in the virtual machine and then intercepted by the host and essentially redone at the host level.  This tends to make I/O and network slow.


The paravirtualized machine has a kernel and drivers that are aware that they are running on a virtual machine and makes choices based on that.  So, when an I/O operation occurs on the virtual machine, most of the work is handed off directly to the Dom0 system to handle, thus reducing the duplication of effort.  Thus a paravirtualized machine will perform network and I/O operations  much faster than the HVM machine, but at the expense of the memory accelerations that the HVM system has.

The Choice

The choice is definitely not clear.  There are huge benefits to both HVM and paravirtualized systems.  As the chip technology changes, the choice might change as well.  At this time I tend to prefer a paravirtualized machine for an Oracle database.  For an application server I would  choose based on how much network performance means to the particular application.  Since all applications are different, there is no right or wrong answer.  Either may be better in your environment.