Brian Jackson - Fotolia

Paravirtualization advantages, disadvantages and use cases

Despite a promising start, paravirtualization comes with significant disadvantages that limit the number of use cases that make sense for enterprise IT, but it still has its place.

Historically, paravirtualization arose as a way to get better performance compared to full, software-emulated virtualization. This was accomplished by allowing the OS to interact with the hypervisor directly to effectively offload some of the most time-consuming tasks from hypervisors that otherwise implement a full software-based VM manager. Paravirtualization advantages include easier backups, fast migrations, improved system utilization, server consolidation, power conservation and so on.

But in addition to paravirtualization advantages, there are significant disadvantages to consider. Although the technology promises performance gains, those gains are often erratic and difficult to predict. The actual performance benefits of paravirtualization vary with the workload -- some paravirtualized applications perform better than others. The benefit really depends on the number of hypercalls -- the paravirtualization API that connects the OS and hypervisor -- and how much compute time those hypercalls really save for the particular workload. For example, a workload that generates a lot of hypercalls might see a noteworthy performance boost compared to that same application running in full, software-emulated virtualization.

The actual performance benefits of paravirtualization vary with the workload -- some paravirtualized applications perform better than others.

Paravirtualization also demands a suitable hypervisor and a modified OS capable of interacting with the hypervisor through hypercalls. A Xen hypervisor and Linux kernel are the most common combination. Nonmodified OSes won't run on a paravirtualized hypervisor like Xen -- at least not without suitable paravirtualization drivers for the OS. Businesses certainly can't coax a vendor to create -- let alone maintain -- a suitable paravirtualized version of the OS. Simultaneously, the tight coupling between the OS and hypervisor creates a dependency that can potentially be broken with a hypervisor or OS update or upgrade. The additional communication channel between the OS and the hypervisor also reduces the isolation of each VM and poses possible security vulnerabilities. Taken together, this OS/hypervisor requirement limits the options available to the enterprise, which is highly undesirable.

Paravirtualization advantages were also blunted by the general availability of processor virtualization command set extensions, such as Intel Virtualization Technology (Intel VT) and Advanced Micro Devices Virtualization (AMD-V). This vastly improved the performance of full virtualization and the workloads running in those VMs. Considering that almost all mainstream servers now include those command set extensions, full hardware-assisted virtualization has emerged as the standard for enterprise deployment.

Paravirtualization inside and out

Both full virtualization and paravirtualization enable hardware resource abstraction, but that's where their similarities end. Learn more about the differences between these two technologies. This series also covers the functions and features of paravirtualization and what OSes support paravirtualization technology.

Today, organizations can still employ paravirtualization as a niche platform for legacy systems. Since paravirtualization doesn't require processor extensions, like Intel VT and AMD-V, paravirtualization can be deployed on hardware platforms that don't offer hardware-assisted virtualization. This is an increasingly rare circumstance where the business must maintain aging legacy workloads or highly customized applications that are closely tied to older hardware platforms.

Next Steps

Achieve workload mobility and fast duplication with VMs

Use these performance enhancements, consolidate servers

Optimize your virtual environment through memory management

Dig Deeper on Containers and virtualization