How to troubleshoot/identify source for high battery usage?

Hi All,

Backstory: I recently bought a Dell Inspiron 16 (7610) laptop with i7 11800H CPU, 16GB RAM, dual Intel UHD + Nvidia RTX 3050 (please don’t judge too hard on that choice :)). Also added a second SSD and now I have a dual boot FC35/Win11. After installing Fedora the OOB battery drain was about 22W. With the quick wins (tlp and turning dgpu off with GitHub - bayasdev/envycontrol: Easy GPU switching for Nvidia Optimus laptops under Linux) this went down to 12-13W, that is ~6 hours on idle. Way too far from the 10ish hours on Windows (and that includes light usage).

My goal is not to go to the extremes, but to be able to comfortably use the laptop on battery for about 4-5 hrs at a time for doing light tasks (browsing/organizing my data/proof of concept programming/…). CPU/GPU intensive tasks don’t matter, I always do those on charger. This kind of should apply 2-3 years from now as well, when the battery is still usable but will already start to wear out.

So far I think I am facing a permutation of two issues. The first may be a bug: 2053957 – Package c-states never go below C2.

But also noticed that occasionally the idle power consumption drops to ~8W and stays there until reboot. This led me to believe (assuming powertop is correct) that some component(s) may remain unnecessarily active and randomly entering low power mode.

Sorry for the long intro, here are my questions:

  • How can I find out what’s preventing the system from entering low power mode? Powertop and irqtop are not much helpful any more:

    • powertop shows everything under “Display backlight” and “nic:docker0”
    • irqtop tells me the most interrupts (3-400/second) comes from “Local timer interrupts”
  • How can one manually turn on/off components to localize the top power consumers?

I would think it likely that the difference is due to fedora actively using the nvidia GPU with the 13W power drain and not using it with the 8W power drain. I do not know how to stop that on an active system. I have never investigated since I prefer my nvidia to be primary and use it constantly. I am, however, mostly using the AC power so demand is not an issue for my normal usage.

Just as another thought.
Are you using a docking station or external monitor?
I seem to recall that the external monitor functions are handled by the nvidia GPU and the laptop screen is handled by the intel IGP in the default arrangement. If that is the case then having the external monitor attached would force the nvidia card to be active.

I have a almost same lapi just cpu with amd but i get better battery life with fedora then my preinstalled win10 i haven’t upgraded to 11 maybe not do that ever.
Now if your device using more battery then there must be some issue maybe your gpu actually the culprit.

And sometimes brands make there device insuch a way that other os or even installing another os like home to pro can be a bad experience. They include some kindof proprietary software without that it misbehave.

The reason I think nvidia is properly off is because there was a distinct reduce in power consumption. Here are the steps I took:

  • clean install/update: ~22W
  • install nvidia from rpmfusion: ~18W (hybrid mode with igpu as primary)
  • turn off nvidia with envycontrol: ~16W
  • tweak with tlp (throttling igpu, pcie set to powersave): ~13W

All measured after 5min idle, screen at 20% brightness, nothing plugged in, on battery.

TBH: unexpected from Dell that dgpu can’t be turned off from BIOS, hopefully in a future update.

Although I still can’t answer my own question on how to systematically identify the power hogging devices, but here is a log how I got to fix excessive power usage on this laptop. Hope it helps others.

Note: there is one hardware change compared how these 7610 Inspirons come from Dell. I bought the laptop with a 512GB SSD which I moved into the secondary SSD slot (2230 form factor) and bought a 2TB Seagate Firecuda 520 as main disk (into primary slot, 2280 form factor).

Long story short after fiddling for many evenings: three devices preventing the system to go into higher power saving modes:

  • bluetooth
  • dGPU
  • SSD

Bluetooth: this was mentioned in multiple forums and turned it off from BIOS (I do not use it so this is acceptable for me). It doesn’t draw much power, but keeps the CPU awake by sending many interrupts.

dGPU: it’s an Nvidia 3050… only bought it because for a small delta price I could have a GPU and can practice CUDA/OpenCV… sigh.

  • In hybrid mode it never ever goes below D0. However when there was a kernel update + Nvidia driver was not yet signed + Nouveau already blacklisted then it went into D3hot → unbinding nvidia driver worked for me:
    sudo echo $dev > /sys/bus/pci/devices/$dev/driver/unbind (where $dev is the GPU’s device id)
  • But at the end I nuked Nvidia by:
    sudo envycontrol --switch=integrated (needs reboot)
    because this gave an extra 2W (compared to unbinding) for the price of needing a reboot to turn dGPU back on. This is OK for me, since I am rarely needing dGPU and even then I’m at my desk on AC.
  • BTW: do not use nvidia-smi because that wakes up the dGPU and will show you incorrect power state. Use sudo lspci -vvv or sudo cat /sys/bus/devices/*/power_state
  • Note that envycontrol also disables the built-in peripherials (hdmi,audio,…) → there is a chance that properly unbinding everything dGPU integrated might works. I did not look into this deeper because already spent too much time on it.

SSD: by SSD I mean the 512GB ‘thing’ came with the laptop (which is a would be nice to keep because of the OEM Win11 licence). I started to suspect it when noticing it was always hot, around 49 Celsius. At this point the overall power consumption was down to 13W at idle and rarely&unpredictably went down to 8W (to my recollection, it only changed with reboots).

  • Turning the pci express slot off in BIOS suddenly changed things: 8W idle with occasional switch to 13W.
  • Then I noticed that the RAID support in BIOS was on by default. Turned it off and suddenly the idle consumption went down to 6W-ish. And stable through reboots.
  • This is already good, but would be better if the SSD would be in low power mode so the internal refresh mechanisms would have a chance to maintain the data on the disk. Fortunately this was also possible by:
    • re-enabling the disk in BIOS
    • adding kernel parameter: pcie_aspm=force
    • in tlp setting aspm to powersupersave (Seagate SSD seems to be OK with it)
    • note: switching back to powersave from powersupersave still gives 7.5W and slightly lower
      temperature (44Celsius) on the SSD

Voila: 6W on idle (~14h), which is far better what I was expecting (even much better than in Windows).

1 Like