Problem #1 - Perfmon is Inaccurate

The first hurdle that we had to overcome was actually proving the cause of the bug.  Microsoft states that the continuously running asynchronous scheduler prevents the CPU from entering lower sleep states (e.g. C3, C4, Deep C4 and Deeper C4) when a USB 2.0 device is installed.  In theory, monitoring the % C3 Time counter in Perfmon should show that when the notebook is idle, the CPU spends all of its time in C3, and plugging in any USB 2.0 device should prevent that from happening.  Unfortunately, that isn't the case:

What we're looking at above is a graph of % C3 time, which actually should include C3 and lower power states (e.g. C4, Deep C4 and Deeper C4).  The first vertical line (orange) indicates when the USB 2.0 device, in this case a Kingston Data Traveler Elite, was inserted.  Note that before and after the USB device was installed, the CPU continued to spend most of its time in C3 or lower, indicating that there is no problem.  However, a quick run of Mobile Mark 2005's Reader 2002SE test proved otherwise.  The sheer presence of the USB 2.0 device reduced battery life from 286 minutes down to 235 minutes, a reduction of 17.8%.  A similar impact was seen when using an externally powered device, in this case a 3.5" hard drive enclosure; battery life dropped from 286 minutes down to 245 minutes, a reduction of 14.3%.  Yet despite Mobile Mark's evidence, Perfmon didn't agree. The processor was allegedly in its lower power states regardless of whether or not a USB 2.0 device was present. 

As you can probably guess, Perfmon is inaccurate in this case.  While Perfmon does a fine job of monitoring C3 states for older processors, it fails to handle properly the CPUs we're most interested in: the Pentium M and Core Duo.  Through our talented investigative journalism (read: by asking a question), we found that there is a tool to report accurately the amount of time spent in C3 on modern day Intel processors. Unfortunately, that tool is only available to OEMs, under NDA, for fine tuning their systems.  Luckily, not everyone abides by the NDAs that their company signs, so we managed to get our hands on the tool. 

The tool is actually just an extension for Perfmon made by Intel to measure accurately the amount of time that their CPUs spend in C3 or lower power states.  Our sources tell us that independently measuring C4 and Deep C4 states is impossible without resorting to actually probing signals on the motherboard, but thankfully, that won't be necessary for what we need to do here today.  What we need to confirm is whether or not plugging in a USB 2.0 device prevents the Pentium M and Core Duo from entering C3 or lower power states. 

With the plugin installed, we now have another performance counter in Perfmon; this time, an accurate reflection of time spent in C3 or lower states.  First up, we have Core Duo:


The orange vertical line indicates when we plugged in the USB 2.0 device

The first vertical line (orange) indicates when we plugged in a USB 2.0 device. Once again, it was a Kingston Data Traveler Elite USB 2.0 drive, although other USB devices had a similar effect.  Once we plugged in the USB 2.0 device, the CPU never went back into its lower power states.  As soon as we removed it (the second vertical line), the asynchronous scheduler was unloaded and the CPU could go back into its lower power modes. 

Next, we tried the same test with a USB 1.0 device, in this case a Microsoft Intellimouse Optical Blue mouse:


The orange vertical line indicates when we plugged in the USB 1.0 device

The CPU had no problems going into C3; however, the continuous polling of the mouse meant that the CPU could not go into C3 as often as if the device had not been installed.  This isn't a bug, just a side effect of having a USB device that is constantly polling for activity. 

Now, the real question is whether or not the same problems exist on a previous generation Centrino system. In this case, we have the Lenovo T43 based on the Pentium M/Sonoma platform released approximately a year ago. 

The first test was the same; plug in a USB 2.0 drive:


The orange vertical line indicates when we plugged in the USB 2.0 device

Just as Intel and Microsoft suggested, this does not look like a Core Duo problem and it affects the older Pentium M the same.  Once again, as soon as the USB 2.0 device is removed, everything goes back to normal.

And just to be sure, we also did the USB 1.0/Mouse test:


The orange vertical line indicates when we plugged in the USB 1.0 device

Once again, we have identical results to the Core Duo notebook.  So far, it is looking like this is not a Core Duo problem and indeed a problem that affects all Intel systems at least.  We'd like to test an AMD solution, but we didn't have anything current at the time of publication nor did we have access to the equivalent AMD tool for monitoring their CPU's C3 time. 

The Notebooks and the USB Devices Problem #2 - Disabling a USB device doesn't work
Comments Locked

61 Comments

View All Comments

  • Eris23007 - Monday, February 13, 2006 - link

    P.S. That's why you read more than just the intro and conclusion pages before asking questions.

    "RTFM"
  • DigitalFreak - Monday, February 13, 2006 - link

    Ha!
  • Eris23007 - Monday, February 13, 2006 - link

    The USB hard drive they tested with had its own power supply. The "USB Drive" was a flash device (USB bus powered), while the "External HDD" was:

    quote:

    Vantec NexStar 2 External 3.5" Hard Drive Enclosure (USB 2.0)

    Note that this device is entirely externally powered



  • UNCjigga - Monday, February 13, 2006 - link

    I will have to do some testing on my notebook with the 'workaround' fix installed. I could have sworn that around the time I installed SP2 on my lappy the battery life suffered, but this was about 6-12 months after I got it so I just figured the battery was getting old.
  • Ionizer86 - Monday, February 13, 2006 - link

    Wow, this is getting interesting. I'm surprised that this bug affects 915 based systems too. I wonder if this could be a broader issue that may affect intel 855 systems or AMD-based computers with chipsets from other vendors. I suppose I could do some playing around
  • Ionizer86 - Monday, February 13, 2006 - link

    No edit button... (accidental post before completion).
    I could test this out on my 855 based laptop if only I had Perfmon and the special plugin :)
  • Ionizer86 - Tuesday, February 14, 2006 - link

    Specs: Thinkpad R50e, Pentium M 1.5 on i855GME.

    I booted into Windows normal mode as cleanly as possible and ran Perfmon. The CPU was usually in C2 ~60% of the time and C3 ~35% of the time, for a total of ~95% in C2 or C3. Upon plugging in any of my USB stuff (an external hard disk, a Sandisk Cruzer mini, or even my IBM mouse), I'd get 95% in C2 and 0% in C3. Maybe my mouse is a USB 2.0 mouse; not sure.

    Battery draw goes from about 11.7W to 12.5W when I plug in my mouse.

    By adding the registry key, I no longer have the issue with the Cruzer or my external hard disk, but the problem with the mouse remains.

    Looks like MSFT has quite a problem at hand.
  • Accord99 - Tuesday, February 14, 2006 - link

    0.8W, maybe its the power draw of the mouse itself?
  • johnsonx - Monday, February 13, 2006 - link

    Adding to what Jason said, you only need the 'secret' plugin for Core Duo processors. The C3 state counter that Perfmon already has works fine on older platforms.
  • IntelUser2000 - Tuesday, February 14, 2006 - link

    quote:

    Adding to what Jason said, you only need the 'secret' plugin for Core Duo processors. The C3 state counter that Perfmon already has works fine on older platforms.


    Not just Core Duo, but: "As you can probably guess, Perfmon is inaccurate in this case. While Perfmon does a fine job of monitoring C3 states for older processors, it fails to handle properly the CPUs we're most interested in: the Pentium M and Core Duo."

Log in

Don't have an account? Sign up now