Intel Core Duo USB Issue: A Mischaracterized Bug
by Anand Lal Shimpi on February 13, 2006 1:40 PM EST- Posted in
- Laptops
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:
Next, we tried the same test with a USB 1.0 device, in this case a Microsoft Intellimouse Optical Blue mouse:
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:
And just to be sure, we also did the USB 1.0/Mouse test:
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
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
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
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
61 Comments
View All Comments
krwilsonn - Wednesday, February 15, 2006 - link
I just read their new article and apparently they were tipped off by some "insider" about the problem and then went ahead and "discovered" and published it. That is what it says at the end of their article, anyway. Their forum thread that is linked has some comments from an editor or someone that are also interesting. I'm sure everyone is checking it out but for those that haven't you should for the sheer humor of it.mino - Tuesday, February 14, 2006 - link
1.) Installed new hp6220 custom configured an hour ago.Platform i915G - Sonoma
Provided Perfmon detects C3 correctly (showing curve around 98% at idle) this system may not bee affected.
I've installed HP's "System Enhancements Disk" package, so some workaround by HP may have been included. (the regfix is not present)
However I have no way to prove Perfmon is correct.
2.) nx6125 I've upgraded from home to Pro last week so it is HP install just a little sripped one
the system spend around 96% of its time at idle in C1, seems wierd to me. No time is spent in C3 also. Maybe somne HP stuff keep the CPU busy.
Both systems are used with Bluetooth mouse via an integrated adapter.
mino - Tuesday, February 14, 2006 - link
Just now I observed on nx6125 that the moment Intellimouse Explorer for Bluetooth goes into power save mode (after ~1 minute of inactivity) Turion goes from 96% in C1 to 96% in C2.Strange as it may seem nothing like this happens on Sonoma platform. I sense ATI SB400 does have something say about it.
Another thing is that the moment CPU starts using C2 intensively, the idle power consumption goes from ~15.6W to 13.2W which is pretty serious amount of power wasted.
Anand, I suggest you do not waste your time by testing battery life when you revisit this issue, to prove assumptions you may use Perfmon's Battery Drain counter.
HMM, funny is, the nc6220 does not show the battery counter present in Perfmon.
mino - Tuesday, February 14, 2006 - link
WE MISS EDIT !sripped == stripped
;D
artifex - Tuesday, February 14, 2006 - link
as soon as you get an MBP in for testing :)zsouthboy - Tuesday, February 14, 2006 - link
Not that its as big a deal for desktops, but mine seems to be doing the same thing when my USB 2.0 mouse/kb is plugged in...krwilsonn - Tuesday, February 14, 2006 - link
Are you being serious??kmmatney - Tuesday, February 14, 2006 - link
Yeah, I've noticed my Prescott's been running a little hot as well. Damn USB 2.0!blwest - Tuesday, February 14, 2006 - link
Yay, yet another "feature". If you run Microsoft Winders, we gurantee shorter battery life.dualathlon - Tuesday, February 14, 2006 - link
Hi, i own an dell inspiron 9300, pen M 760, geforce 6800go. When i enable that registry key, i experience heavy pointer delay when playing Counter Strike Source. I tried both logitech mx510 (wired) and logitech mx900 (bluetooth wireless, paired with dell internal BT and logitech hub as well).I see no delay in office apps, FYI. I haven't test battery life with that key though.