Virtual PC 2007: The Great CPU Gobble!

analysis
Jul 13, 20072 mins

Ever since VMRC Plus came out I've been spending more and more time with Virtual Server 2005 R2 SP1. As you may recall, I extolled the virtues of VMRC Plus a week or so ago, and since then I've been reaping the benefits of VS 2005 as a testing and development environment. One of the unexpected side effects of moving from Virtual PC 2007 to VS: Lower CPU utilization. For some reason, when I load up my test scenar

Ever since VMRC Plus came out I’ve been spending more and more time with Virtual Server 2005 R2 SP1. As you may recall, I extolled the virtues of VMRC Plus a week or so ago, and since then I’ve been reaping the benefits of VS 2005 as a testing and development environment.

One of the unexpected side effects of moving from Virtual PC 2007 to VS: Lower CPU utilization. For some reason, when I load up my test scenario (two client VMs collecting data and uploading to a single server VM) in Virtual PC 2007, the virtualpc32.exe process hosting the scenario chews-up 50% or more of the available CPU cycles on my dual-core workstation. By contrast, when I load up the same scenario under Virtual Server, the VMs chew-up almost no CPU, which is what I would have expected given that the workloads running within them are very light (i.e. Task Manager inside the Guest OS sessions shows nearly zero CPU utilization).

I’m going to forward my findings to Ben Armstrong (i.e. the “Virtual PC Guy” at Microsoft) for analysis, however, I already have a theory on the source of the excessive CPU utilization. For starters, it seems isolated the client VMs, both of which are running a high-resolution monitoring agent (DMS Clarity Metrics Tracker). This agent makes frequent calls to PDH, WMI and the Registry, and I’m guessing that Virtual PC 2007 is generating a lot more overhead when processing these calls than Virtual Server. The agent also uses a set of high-resolution timer objects that likewise seems to give Virtual PC fits.

As a simple test, I tried disabling the agents on each VM. CPU utilization for virtualpc32.exe immediately to dropped to below 10%. Case closed.

Bottom Line: For testing applications that use high-resolution timers, or that make frequent calls to certain system libraries, Virtual Server 2005 R2 SP1 does a much better job of handling what should normally be a very fast, lightweight operation. And with VMRC Plus, you don’t have to sacrifice usability in order to reap the rewards of better real-time application support under Virtual Server.