Thursday, June 3, 2010

Virtualization, stage two

Now that products such as VMware have shown that there is a demand for virtualization, we're ready for the next stage. Our current use of virtualization is clumsy and inefficient. The next stage will provide solutions that are more effective.

The virtualization technologies that we have (VMware, Xen, Microsoft's Hypervisor) have a common problem: their child machines run real operating systems. We thought that we wanted little virtual PCs, all existing in a pretend environment, would help us. (And it does, up to a point.)

The configuration of a fake PC run with software inside of a real PC is an inefficient solution. It's inefficient because the fake PC expects to be a real PC with all of the quirks of a real PC. For example, a fake PC expects to deal with hardware like the PIC, video cards, and network cards.

Creating all of the pretend low-level hardware for a virtual PC is work. Lots of work. Most of VMware's effort is creating the fake hardware that the fake PC can talk to, and then either ignore or abstract away for higher levels of the operating system.

What we really want is not a complete fake PC but just the operating system API. We're long past the days of writing directly to the hardware as we did with the IBM PC. The operating system API has become opaque.

Since we cannot see beyond the API, we don't care about the innards of the operating system. So we don't care if we are talking to a "real" operating system that is driving the hardware or a "virtual" operating system that is a thin layer that translates requests to the hyperviser for execution.

A good point to make this "cut" is the hardware abstraction layer. Let the hypervisor engine handle everything below the abstraction layer, and let the operating system worry about the things above it.

The second stage of virtualization will be this stub layer of operating systems. With a bottom layer of the hypervisor and a thin layer of OS API, we will be able to easily create virtual machines. ("Provisioning", in the jargon.) Creating an instance of a stub OS API will be faster than creating an instance of a full OS, since you can ignore all of the hardware details. Run-time performance of virtual machines will improve, since we can eliminate the emulation of low-level hardware.

I suspect that Linux will get there first, since anyone around the world can start on the project. Apple and Microsoft will probably remain unconvinced, until the Linux project shows efficiencies and market demand. But once demonstrated, Microsoft will have to provide an answer of their own, since they cannot afford to lose the market for large-scale computing.

No comments: