Windows Virtual PC – VPC.exe consumes 100% of one core

After most of a month troubleshooting, windows support comes through. Jim M from the Microsoft Customer Support  is dedicated and provided excellent support through out. To be accurate the reason this took so long is because I initially thought it might be a problem with the SP1 beta which I had installed.

The issue is that VPC was consuming 100% of the CPU of one core. The challenge is that this is a by design solution which in my opinion was the wrong approach to solving another problem described in KB 981285. So in troubleshooting a problem with the VPC client the KB article had me modify a setting that effectively by design created a performance problem on the host pc.

In this post I will cover how to undo the fix described in KB 981285 and restore normal CPU usage on the host machine while the VPC is running. I will also describe the effect of the enable_idle_thread.

How to Solve:

  • Shutdown (not hibernate) all VMs hosted by Windows VPC.
  • Locate the options.xml in this location:

C:\Users\jeff\AppData\Local\Microsoft\Windows Virtual PC

where Jeff equals the logged in user.

  • Open the Options.xml file in notepad and look for the following setting:

     <virtual_machines>
        <enable_idle_thread type="boolean">true</enable_idle_thread>
        <power>
            <mm_timer_duration type="integer">1</mm_timer_duration>
        </power>
    </virtual_machines>

Note: enable_idle_thread setting essentially tells the VPC host to use 100% of one CPU core when the VPC is idle so that the host operating system does not go to sleep based on your power management settings. In my opinion this feature should be deprecated and a new feature should be added to ignore power management settings while VPCs are running. More info on enable_idle_thread can be found here: VPC Guy

  • To restore regular CPU performance on the host PC change the enable_idle_thread setting to false as shown below.

    <virtual_machines>
        <enable_idle_thread type="boolean">false</enable_idle_thread>
        <power>
            <mm_timer_duration type="integer">1</mm_timer_duration>
        </power>
    </virtual_machines>

Save and close the options.xml.

Reflections

Reflecting back I caused the problem by following the KB mentioned above and turning on the enable_idle_thread in order to address VPC client performance issues. The challenge is that I was not aware of what the setting did. I took it for granted that the setting would come with no side effects.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>