Reading this article about Xen and Virtual Iron made me think again how hard it is to develop a high-quality Virtual Machine Monitor or hypervisor and how that technology approach is so different from Virtuozzo.
Essentially, the hypervisor is a lot like an operating system. It shares CPU, memory and I/O between Virtual Machines – it includes an SMP scheduler, memory manager, I/O subsystems, plus its own driver. In addition, the hypervisor needs to efficiently support PAE, NUMA, thread libraries and other low-level mechanisms.
In short, the hypervisor needs to re-implement all the things that are already implemented in operating systems. Besides countless man-hours, I see few other issues:
· It took OS vendors years and years to optimize drivers, schedulers, memory managers, PAE and NUMA support to the point of working really well with wide range of applications and under different conditions. Granted, repeating is easier than doing for the first time, but still it takes lots of effort that the OS vendors have spent years building that expertise.
· Virtual hardware behaves differently than physical, which means that the OS is not really optimized to work on it. That means in the process of para-virtualizing an OS, someone needs to perform all these optimizations again.
· When an OS gets more optimizations that it didn’t have before, chances are the equilibrium between OS and hypervisor will be lost and a lot of effort will need to be spent restoring it.
Frankly, it’s not like I’m going to lose sleep over VMware, Microsoft and Xen spending a lot of money and time of their best people on re-implementing what is essentially an OS kernel just below the actual kernel. Needless to say, Virtuozzo does not re-implement anything. It uses the OS and drivers directly and automatically takes advantage of all improvements made to the OS kernel.