Minimum Power Draw Competition

I thought it’d be fun to hold a little competition for any other power efficiency enthusiasts here. The rules are simple: demonstrate the lowest possible power draw on a FW 16 you can get so long as:

  • the system is on
  • Is portable/not tethered to a stationary fixture (e.g. wall outlet, stationary monitor, etc.)
  • system is ready for use, but does not need to be actively performing a workload

My current record is -5.37W
image

This was achieved sitting at the desktop with arch linux, power-profiles-daemon, and powertop --auto-tune (with the keyboard tuning disabled). Ryzen 7, no dGPU.

Looking forward to seeing what others achieve. Happy hunting!

7 Likes

What’s your CPU model and do you have dGPU installed?

Good catch. Ryzen 7, no dGPU. I added this to the original post.

1 Like

I havent managed to go below 6W yet, so that’s a pretty good result. Most of the time I get 7-8W though, but that’s with apps running.

Did you try the amdgpu.abmlevel kernel config setting as per Adaptive Backlight Management (ABM) ?

2 Likes

I’ll average 7-8W with regular spikes to 10W during actual usage yes, but that’s ok. That’s not quite what I’m targeting with this particular test. Battery life is a spectrum across a minimum and maximum. The minimum battery life is obviously something approaching 0, as a heavy load will destroy any hopes of working without a charger, and is thus not that interesting.

But what’s the upper bound? What is the maximum possible battery life the device is capable of existing at? Knowing this can help understand how much battery life is either left on the table, or how much your sacrificing for certain features/workloads.

As an example, if my 5.37W is the minimum possible draw, then that would suggest a battery life of 15 hours (85Wh / 5.37W). If my average draw is 7.5W, then that is 75% of my maximum possible battery life, not too shabby imo. But if also makes me wonder… what if I could get more?

Compare this to my Thinkpad T470 with a slighly smaller battery (72Wh) that has a higher maximum battery life of somewhere around 24-30hrs due to the fact that I’ve observed it’s minimum draw around 2.4-3W.

I have not! I wasn’t aware of this, I’ll definitely be checking it out. Thanks :slight_smile:

1 Like

I got some lower numbers, though I may not have followed the spirit of the competition exactly… Here’s my specs:

Framework 16
7840HS
7700S module
2x16 corsair ddr5-5600
1TB corsair mp600 active nvme drive
2xUSB-C 3xUSB-A 1xAudio Card

NixOS Unstable
Stock 6.8.0 Kernel
PPD 0.20 on Power Saver
Mesa 24.0.2
amdgpu.abmlevel=4 kernel param (don’t have the patch for PPD integration)
powertop --auto-tune with keyboard autosuspend disabled

My lowest with a reasonable setup was 4.69W via powertop

I was able to push it a bit lower to 4.30W by disconnecting all but 1 usb-c port, and both the keyboard and trackpad modules

I’ll be happy to be beaten though, I think there is still more juice to squeeze so to speak!

6 Likes

Thanks for sharing! Both of your tests are definitely valid and in the spirit. The second more extreme test may seem odd to some, but it provides us some useful information about the power draw of those components.

I wasn’t aware of the amggpu.abmlevel parameter, which brought my arch install down to 5.11W. I was also experimenting with a minimal kernel (via make localmodconfig) with speculative protections diasbled, but I don’t think that changed much. I’m very excited to see your NixOS pull down into the 4’s because that means my arch install should be able to do the same without having to install all the hardware with my own compilations.

As excited as I was to be beaten, I’ll be back to take back my crown :wink: . Let’s see how far we can push it!

1 Like

@Bryan_Ames I see you didn’t bench NixOS on your thread, but you chose to use it here. I’m not familiar with that distro at all, was this coincidental or is there something about the distro that lends itself towards higher efficiency?

Rather than setting the default like that you can instead set it up so it only applies on battery if you take the kernel patches. PPD 0.20 will do this when the kernel patches are present.

Just add these two patches which are to be on 6.9-rc1:

This balances the experience against power savings.

5 Likes

I haven’t applied a patch before so it’s a bit of a learning curve for me. At first I manually copied to code changes into the source, make sure they fit in with the logic (the double return r looks a lil odd in amdgpu_dm_connector_late_register) but when I went to use Arch’s makepkg to rebuild, it wiped my changes by making a fresh tar extract lol. So I’ll have to find the proper way to do it when I get another chance.

I’m using nixos for fun/curiosity. It’s a bit of an oddball distribution with a novel package manager that I’ve been meaning to test out for a while, and decided to give a go on the framework 16. Its main claim to fame is that it can have a declarative package manager rather than an imperative one. In practice, you define your system in a couple files, then you can reproduce it down to the specific versions of packages trivially by just copying and running those files on any other machine. I don’t think it has any special benefits for power efficiency other than having access to very new packages. I imagine arch could get the same results.

Just curious, but if you took an educated guess as to the timing these patches might make it into the kernel, what would you say?

They’re already in Linus’ tree. So they’ll be part of 6.9 unless something comes up needing them to revert.

2 Likes

How do you all get such low power consumption on your FW16. I am running the 7840 CPU with the dGPU on Fedora 40 with KDE Plasma 6.1 and even with Wifi off, Bluetooth off, screen to lowest brightness, Power on energy save, keyboard backlight off, etc and even after removing all but 2 USB-C expansion cards I rarely drop below 14W. Any guides on how to reduce power consumption?

In my experience the wifi and bluetooth have an unmeasurable impact on battery life (assuming they’re idle and not exchanging data). I believe power-profiles-daemon is installed by default on Fedora, so you’re likely using that as well. It doesn’t seem like you’re using powertop to set power saving flags… but I’m not certain how much of an impact that actually has. My best guess is that the dGPU isn’t going into the d3cold state for some reason.
You can run the following command to see what state the dGPU is in at idle without waking it up
cat /sys/class/drm/card1/device/power_state

From what I’ve read, the dGPU mounts to card1, but it may be worth checking that it’s not card0 instead. I don’t know the command off-hand to do this, but if one is in d3cold and the other isn’t then you know the d3cold is the dGPU because the iGPU should never be asleep given it’s running the desktop env.

Edit 1:
If neither of them are in d3cold while you’re doing the work you’d like to draw less power, then you may be able to use nvtop to see what process is on the dGPU. As I’m writing this up I’m drawing ~10W at 40% brightness. I try to keep the browser off-screen when I can because I find it can be a powerhog, and I’m sitting near a window at a coffee shop which is preventing me from getting away with 0-5% brightness like I normally do.

Edit 2:
What’s your cpu utilization during when you’re seeing 14W draw? I’m usually between 0-5% usage.

Assuming @RandomRanger is right in this theory perhaps you’re using some sensor monitoring software? Software like this keeps the dGPU awake.

1 Like

I’m @RandomRanger, but switched emails and the migration failed to work on my forums account so I made a new one on the new email. I wanted to add that at a cursory basic test it appears that LIbrewolf may be more battery efficient than Brave. This is assuming the power draw doesn’t drastically change based on the number of unused tabs. More testing is needed, but in my first tests I dropped by about 2-3W when I switched browsers out of curiosity.

Ok I tested this a little bit and in case of my system, i do not have a card0 and card1, but instead a card1 and card2. And indeed (as @Mario_Limonciello has suggested) had a temperature monitoring tool active in the task-bar and after removing it, my power consumtion dropped by a few watts (now sitting at 11.3W) and one of the two cards (card1) switched from D0 to d3cold. I am not sure though which card is which, as under nvtop, the dgpu is listed as device0 and the igpu listed as device 1.

When i use nvtop, it tells me that device0 (dgpu) draws 0W and device1 (igpu) around 5W. Interestingly, whenever I use nvtop, my power consumption increases from 11.3 to 19.3W.

At idle, my cpu utilization sits at around 0 to 5%.

Is there any way to figure out which devices card1 and card2 are referring to to be sure. And might it be favourable, if possible, to make card1 be the igpu (or is this completely irrelevant as long as the system defaults to the igpu)?

Given that card1 is switching to d3cold, that is your dGPU. Note that because of how nvtop works, it will wake up the dGPU and turn it back on. This is why your power usage spikes when you run it, and is why the cat command I linked earlier is useful.

I think disabling that temperature monitor will drastically help your battery, assuming the dGPU is now entering d3cold. What I would recommend doing to get a benchmark similar to how I’ve tested mine above is to close all applications and sit at the desktop with your brightness at 0%, battery-saver on, etc. etc. and let it sit there for a few minutes. You can use a tool like btop to monitor the power draw (although I use polybar to give me general stats at the top of my screen, so I don’t need btop). I’d be curious what your new battery idle value is.

Update 1:
also note you can use the command watch -n 1 cat /sys/class/drm/card1/device/power_state to check the gpu state automatically every second.

Now, at 0% brightness, power save mode, keyboard backlight off, etc., my system sits at around 10W in idle. That is with all 6 ports being USB-C. With my standard ports (2x USB-C, 2x USB-A, HDMI and Micro-SD), the power consumption is around 0.1 to 0.2 W high which i find negligible. Still, I am nowhere near 6W. I cannot rule out the possiblity, that the dGPU consumes some power, even when in d3cold and that I can only reach 6W when not having it installed. Are you using your system with dGPU or without?