\chapter{Conclusion}

The pursuit of making server infrastructure more dynamic, efficient, and cost-effective has led to the evolution of virtualization technologies in multiple dimensions. As a result of this evolution, we now have a diverse set of virtualization platforms to choose from, each prioritizing a different subset of the overall virtualization goals. There is a clear need to analyze and understand the focus of each of these platforms, and to evaluate the platform choices based on factors beyond the set of standard benchmarks. We chose KVM, Xen, and Linux Containers to represent full-virtualization, para-virtualization, and container-based virtualization, respectively. We evaluated the platforms based on (i) the overhead they impose to virtualize CPU, memory, network access, and disk access; (ii) their performance on workload-specific benchmarks; (iii) their performance in virtualizing the Intelligent River\textsuperscript{\textregistered} middleware components; (iv) the flexibility each offers in performing common operational tasks; and (v) the isolation they provide for applications.

Through a detailed experimental analysis, we found that Linux Containers exhibit the least overhead in virtualizing CPU and disk access, whereas KVM exhibits the least overhead with respect to memory. Xen was found to exhibit significant overhead when used to virtualize multi-threaded aplications. KVM, in its current form, exhibits significant overhead in virtualizing disk access; however, we note that the problem is being addressed with major design changes slated for release in the near future. From an operational standpoint, Linux Containers provide a significant advantage by performing the common tasks of provisioning, booting, and rebooting a virtual machine several times faster than both KVM and Xen. Although Linux Containers fare well on most of our evaluation criteria, they come with the downside of providing poor isolation among the containers. Xen was found to offer superior isolation among the virtual machines.

There is no single \emph{best} virtualization platform. Based on our results, we conclude that Linux Containers are preferred to virtualize infrastructure that is dynamic by design, and does not require a high degree of resource isolation. It is important to note, however, that Linux Containers cannot be used in situations where the applications need kernel-level customization. For infrastructure that demands superior resource isolation, KVM is preferred over Xen, if most of the applications are memory intensive; whereas Xen is preferred over KVM if the applications involve significant disk access.
