Coding Horror

programming and human factors

Virtual PC 2004

This won't be news to a lot of you, but I was playing around with Microsoft Virtual PC 2004 today:

Virtual PC 2004 bootup screenshot

And it's very cool. I know, I know, I'm probably the last developer on the planet to get wise to the benefits of virtual machine technology. In my defense, I have a lot of computer hardware in the house, so if I needed an environment to test something in, I'd typically just grab one of my extra PCs and have my way with it. The additional layer of software translation-- emulating an x86 PC on an x86 PC-- seemed unnecessary to me, like the VGA port on a flat panel monitor. Lately I've been reconsidering the convenience factor of the software alternative.. particularly given the excessive power of today's desktops.

If you are wondering just how this software can make your life easier, allow me to quote from the product FAQ:

• Safety net for OS migration: Virtual PC provides IT Professionals with a cost-effective safety net for certain employees to run critical legacy applications on an interim basis while IT Pros continue their current migration plan to a new OS. Microsoft operating systems and applications running on VPC virtual machines are fully supported in compliance to the MS product lifecycle guidelines. So Windows XP Pro deployments can continue on schedule, even if faced with unanticipated application compatibility issues, allowing Microsoft customers to take advantage of the ROI and productivity gains of more current operating systems.

• Rapid reconfiguration: Virtual PC increases the productivity and responsiveness of technical support and help desk employees by enabling them to rapidly switch to alternate operating systems or configurations, eliminating lengthy reconfiguration and rebooting between calls. Virtual PC can also be used by training professionals to rapidly reconfigure custom environments for use in training, and to eliminate lengthy reconfiguration downtime between classes. Use of Virtual PC in these scenarios results in increased customer responsiveness and lower operating costs.

• Accelerated software testing and debugging: Virtual PC enables developers to test and debug their software on a number of different platforms in a timely and cost effective manner, all on one PC, improving software quality and reducing time to market.

It's like having an entire test lab full of machines, loaded with every kind of crazy OS and configuration you can imagine. Plus, on each machine you get rollback and "clean image state" by saving hard drive image checkpoints-- so you don't have to reinstall anything. No need to even burn CDs or DVDs; you can mount ISO images in the virtual CD drive. Definitely convenient!

If you're worried about performance, as I was, don't be. A good rule of thumb is that same-system emulation costs about ten percent of raw performance, which is reasonable. The bigger determining factor for performance is the choice of devices emulated:

The area that VPC and VMWare must improve very much is in the graphics subsystem. The performance impact is big both in VMWare or VPC. The advantage of Virtual PC 2004 (and the reason that makes me like it so much) is the standard hardware emulated: S3 Trio, SoundBlaster 16 and a standard DEC network card. In the case of VMWare, the guest operating system needs a special video driver (SVGA II) to display more than an obsolete 640x480, 16 color display. If you want to run, e.g FreeBSD, you are with no luck.

Virtual PC 2004 isn't the only game in town; there's also VMWare. The key differences between VPC and VMWare are covered in this flexbeta review. As developers, I'm assuming that most of you have access to MSDN Universal, which includes a free (for development, of course) version of VPC. So that kinda makes it the winner by default. Still, it's comforting to know that SymantecMicrosoft has a competitive product in this space.

That's for desktop use. There's also a school of thought on virtual machines for servers-- one that runs contrary to the googlefarm approach. Why not have a powerful server run 5 instances of Windows Server 2000, each blissfully unaware of the other instances?

Written by Jeff Atwood

Indoor enthusiast. Co-founder of Stack Exchange and Discourse. Disclaimer: I have no idea what I'm talking about. Find me here: http://twitter.com/codinghorror