Virtual machines are a relatively new workload for Linux. As with other new types of applications, Linux support was somewhat lacking at first and improved over time.
This paper describes the evolution of hypervisor support within the Linux kernel, the specific capabilities which make a difference to virtual machines, and how they have improved over time. Some of these capabilities, such as
ptrace are very specific to virtualization. Others, such as AIO and
O_DIRECT support help applications other than virtual machines.
We describe areas where improvements have been made and are mature, where work is ongoing, and finally, where there are currently unsolved problems.