What I want next from virtualisation

Virtualisation, for me at least, is the biggest thing to happen to personal computing since realtime 3D graphics acceleration. It’s trivially the biggest thing to happen in the server market in the same time period, too.

The ability to run another operating system on my computer with almost full capability, while the host operating system is running, is such a financial and productivity win for me that if it were to go away for some reason, I’d contemplate giving up software development for fun.

Being able to develop and test software in isolated sandboxes without having to buy, assemble or otherwise spin up new hardware allows me to work faster and do things I wouldn’t otherwise have the resources to do. For example, I’m currently working on building a software system that requires a minimum of 6 networked operating systems for deployment in the minimum, non-resilient configuration. I would have no reasonable way to build that if I needed 6 additional physical computers, since I can barely afford this one.

As it stands, I just loaded this machine with RAM and off I went. I love it.

That doesn’t mean it’s a solved problem and virtualisation can’t or shouldn’t go any further, though. There are a couple of things that I’d love to see worked out, that’d open new doors to what can be done with single computer systems and more advanced virtual machine migration.

The first is, somewhat obviously, full graphics hardware virtualisation. Exposing the graphics hardware on the host in full to all guests would be a great boon. No longer would you have to reboot to Windows to enjoy a Windows-only game, if your primary operating system was something else. You’d just run Windows at the same time and switch to and from it seamlessly, with no loss of service on the host. If I wanted to work on some (Windows-only) AMP, or test some OpenCL code cross-platform, I’d just fire up a guest and my only additional financial investment is the software licensing.

That can’t come soon enough.

The other thing I’d love to see is being able to move a running guest to another host, quickly and seamlessly again, with some kind of guest synchronisation that doesn’t involve full copies of the virtualised disks. Something that’s constantly making the running guest’s state available to other hosts, so they can run the guest and resume as close to instantly as possible, without having to fully share the virtualised disks.

Not having to fully copy the virtualised disks and RAM is the key here. Say I’m working on a guest on my iMac or PC at work: I want to take it with me on the move on my laptop, quickly and with no effort other than pausing it on the PC and pressing play on the laptop.

It’s a lot to ask, to quickly sync guest RAM and disks, but it can be done.

Hot migration of running VMs is already possible, but it tends to happen only on very fast networks where the guest data can be moved around to new hosts very quickly as a full copy, just by virtue of the network’s performance and not being terribly clever about it.

At-run-time delta updates pushed to all potential hosts or something, avoiding all full copies (other than the first one of course!).

If you work on virtualisation technology, please make that happen!