CPU usage jumps to 100% when on battery power (even in sleep!)

System details:

  • Windows 10 Pro (latest roll up pack, fully up to date)
  • Framework 11th gen laptop w/ latest BIOS (3.17) & latest driver package
  • 16 GB RAM
  • USB A, x2 USB C, HDMI Expansion Card (HDMI card has the experimental FW & bodge wire installed)

Long and short of it is that the CPU usage on this thing jumps to 100% and tries to liftoff into space using the fans if I unplug it from wall power. If I close the laptop or manually put it to sleep while on battery power, it will continue to use 100% CPU. If I plug the power back in, CPU usage drops back down to normal. Task Manager does not reveal anything obviously causing this (i.e., whatever is using all that CPU isn’t actually reflected in Task Manager!).

So far I have tried:

  • modding the HDMI expansion card with the jumper wire & the experimental FW; no change
  • removing all of the expansion cards; no change
  • running /SFC SCANNOW & DISM /Online /Cleanup-Image /RestoreHealth; no change
  • Windows Defender hasn’t found anything nefarious on my system
  • Various google searches; nothing useful.

I’m kind of at my wit’s end. Anyone else have any ideas?

I had this problem when I ran Windows 10, too! It went away when I switched to Linux Mint. I observed this phenomenon with two separate laptops as well. I hate to be that guy, but it’s definitely Windows, and you’re definitely going to be Googling the problem every so often for months on end until you give up and switch to something else (or just turn your laptop off every time you transport it).

This exact issue is the straw that broke the camel’s back for me :wink:

1 Like

I’m not interested in Linux, and this isn’t a “should I switch to Linux” thread, so respectfully, please table that line of discussion.

Turning off my laptop every time it’s not plugged into everything on my desk is what’s gonna happen if the root cause cannot be identified. Not the end of the world for me, just annoying.

I had an occasional similar issue when I was on Windows 10.
Which power plan are you using?
Can you check whether Fast Startup is enabled? (I think it’s visible if you click the sidebar link Choose what the power buttons do)
Can you show us what the following settings are (from Control Panel>Hardware and Sound>Power Options>Edit Plan Settings for your current power plan:

  • Sleep>Allow wake timers
  • USB settings>USB selective suspend setting
  • PCI Express>Link State Power Management

I’d guess the 100% usage is related to one of the system services like Sysmain or the WMI host but we can look at these other settings first to see if there’s any adjust we can do.
I vaguely remember that I was able to get the issue resolved, but then I started just shutting down as I didn’t need to sleep and of course forgot exactly how I did it.

, ,

@Gary_S, thanks for the reply! Here’s how things look:

  • Power plan is balanced.
  • Fast startup is disabled.

Believe it or not, I don’t see any of the other options you’re describing under edit plan settings; it looks like much more basic options, e.g., Slideshow, Sleep, Display, Battery. The “Sleep” category has no mention of sleep timers. The path to the power options is a little different for me: Control Panel->Power Options->Change Plan Settings->Change Advanced Power Settings.

@anon81945988, I’d prefer not to upgrade to Win 11, but if it’ll fix the problem…

1 Like

Argh, I have seen this before on some Windows installations but I have yet to figure out why. What happens is that the registry settings that control the visibility options for those advanced controls are set to disable the visibility.

There is a relatively simple Powershell script that will generate a UI that will show you the registry key that points to a particular advanced option, but you will then have to take a trip into the registry editor to set the visibility on for the options you want, or write another Powershell script that modifies the registry for you.
To make an option visible, you’ll want to change the value to “2” - “1” means it’s not visible.

Here’s the Powershell command:

gci 'HKLM:\SYSTEM\CurrentControlSet\Control\Power\PowerSettings' -Recurse|? Property -contains 'Attributes'|gp|select Attributes, PSCHildName, @{ N = 'Name' ; E = { $_.FriendlyName.Split(',')[-1] }}|out-gridview

The registry key that needs to be modified is the second column in the grid.
On my system, these are the options that I’ve got enabled (note that some of these don’t display if they are not supported by the hardware even when visibility is enabled).
Screenshot 2023-05-28 081122

I think I had to hunt these down one at a time, but that PS script to show them in the GUI is really cool. I can’t take credit for it, though - I found it in this post. I believe the person who put together that script has a more involved one that will actually allow you to toggle them from the GUI display as well in the same post.

Regardless of how you make them visible, I ended up making the following changes:

  • Wireless Adapter Settings > Power Saving Mode > Maximum Performance
  • Sleep> Allow wake timers> Disable (I don’t wake mine up on a schedule)
  • USB selective suspend setting> Disabled
  • PCI Express > Link State Power Management > Off

For testing, you can try adjusting your settings to match from whatever their current values are to these to see if that helps and switch it back if there’s no change.
Finally, I had the Superfetch service disabled (run services.msc, find Superfetch, and set startup to Disabled). If you’re running Windows 10 21H2 it might have been renamed to SysMain (the current name in Windows 11, and I don’t remember at what point the name changed).
Regardless, it is supposed to do a sort of pre-caching of frequently-used programs to make them start faster but it’s a hold-over from Windows 8 and was more useful for computers with spinning hard disks. I am pretty sure this was my culprit but I made a lot of tweaks (until we started getting into the nitty-gritty I had forgotten how many) so in my case maybe it was a combination of these things.
Hopefully some of this will be of use to you :smiley:

1 Like

Wow, appreciate the detailed reply! Thanks very much for all of that.

After running the script and checking the output, the majority of the items you outlined didn’t appear at all; notably, the stuff around wake timers, anything to do with PCI or processor states were not present. T_T

I did manage to find SysMain and disabled it, guess we’ll see what happens!

Thanks again. :slight_smile:

Well, that is frustrating (the entries missing completely). It is possible to recreate them manually by creating the keys in the registry, but perhaps that might be more involved than you’re interested in.
If disabling SysMain doesn’t help and you want to give it a try, I will capture the registry keys from a Windows 10 21H2 installation so we can make sure you’re getting the proper data.

2 Likes

I’d definitely up for trying the registry edits to add the necessary options! Really appreciate you taking the time to help me try and figure this out, this issue is really driving me up the wall! :face_holding_back_tears:

Thanks very much!

1 Like

It may be worth looking through entries in Task Scheduler. Previously in this forum we found a bandaid fix for the Modern Standby issues present in every modern Intel laptop by disabling a task related to memory checking that would run every time the computer slept. Maybe there’s a task set up for every time AC is disconnected.

Apart from that, definitely look up some guides on enabling all hidden power options. Active Link State Power Management is a good one to fiddle with, also maybe Maximum Processor State? You know it’s a hardware defect if it’s still preparing for liftoff when Maximum Processor State on battery is like 20%.

3 Likes

I can’t attach the CSV I exported with all of the power options generated by the Powershell code snippet I posted before, but I will post the screenshots. This is from a desktop running Windows 10 21H2 build 19044.2846.

I can put the CSV in a Dropbox folder or something for you’d prefer - just let me know.



1 Like

Ah, it does try to do some mime-type parsing - when I do that it says it can’t determine the size of the image and doesn’t upload anything.

1 Like

You didn’t explicitly ask for a root-cause fix to the issue – only if “Anyone else have any ideas?”

It’s entirely fine if you’re uninterested, but switching to Linux is a valid idea for (decisively) eliminating the issue, so it’s rather shortsighted and unproductive to assume my attempt at helping you was off-topic. I gave my honest response in describing how I fixed the issue on my laptop relatively quickly and safely, so if any users that see this thread aren’t interested in registry hacks, the alternative is at least discussed. I know that when I encountered this issue, I certainly wasn’t interested in registry hacks.

If you do find a way to continue using your OS of choice, however, I’m rooting for you! The Framework community is one centered around consumer choice, and if you choose Windows 10, I hope you can find a way to make it work. You might even find a root-cause fix before the OS gets EOL’d in 2 years. I would have loved to have a root-cause fix many years ago when I first started running into this nonsense on my goofy old Dell Precision. I think my mistake was assuming the problem was on Dell’s end, but that discussion is actually off-topic.

1 Like

@Gary_S, thanks again for your help!

As I was searching around for a similar list I could just copy-paste myself, I stumbled across a few related things that I ended up trying, and it seems like something fixed the issue! In retrospect, I should’ve tested after each change, but meh… so here’s what I did:

  • Performed Steps 2 & 3 in this guide; the relevant registry value did not exist, so I just added it because why not
  • Ran this script to disable scheduled waking (I don’t think this was the issue, since it did it even when awake, but I ran it anyway). There’s a lengthy conversation around what this does here.
  • Explicitly disabled an old backup task in the legacy backup system tool (I don’t use it anymore, and I saw it listed in the script’s output).

I’ve been using the laptop for about 15m now on battery power, and it’s no longer trying to lift off and enter the Earth’s orbit. Fingers crossed that this persists through a restart! I will be back if it doesn’t.

1 Like

@elite_kzm I can understand that - I think I used an “everything but the kitchen sink” method when the obvious things didn’t address it. I will also keep my fingers crossed :crossed_fingers:

1 Like

@anon81945988, let’s see:
wmi-power.stl (11.1 KB)
As an STL it worked (which makes sense in retrospect)

2 Likes

Congrats! There must have been something weird in the power plan, I have seen Windows updates do strange things to power plans in the past. Restoring the default may have been the solution.

1 Like

Try disabling CompatTelRunner.exe and see if that works. According to the description

The purpose of Microsoft Compatibility Telemetry is to collect and transmit technical data from your Windows computer to improve the user experience. CompatTelRunner.exe, a service in Windows, gathers information about computer usage and software performance and sends it to Microsoft for analysis and enhancements.

This exe is more or less trojan horse

2 Likes

Telemetry was not the issue; I had already solved it by the time you responded.