[RESPONDED] Framework 16 Battery Life/Energy Usage on Ubuntu 22.04

I’m seeing fairly high idle power usage from my Framework 16.

My setup:

Hardware

Ryzen 9 7940HS
RX 7700S GPU
96GB RAM, 5600 MT/S (Crucial's kit)
Samsung 990 Pro, 4TB

Plain black spacers
RGB US English keyboard
3x USB-C expansion cards
1x USB-A expansion card
1x audio expansion card
1x HDMI (gen 3) expansion card

Software

Ubuntu 22.04.4 LTS
Kernel 6.5.0-1015-oem (installed per the Framework install guide instructions)
Display resolution at 2560x1600, 125% (fractional) scaling
Wayland
GNOME Shell 42.9
Running the PPA version of AMD PPD

I’ve run powertop --auto-tune (after collecting the necessary # of measurements). All tunables are set to “good”, except for the USB 2.0 hub (for the keyboard and trackpad).

The various measurements below are taken with no applications running other than a terminal window running powertop.

Setup A

  • Balanced PPD profile
  • 165 Hz refresh rate
  • Screen brightness at minimum
  • Bluetooth off
  • Idle draw of 16.5 W; disabling the wireless radio brings idle draw down to 15.2 W

Setup B

  • Power saver PPD profile
  • 165 Hz refresh rate
  • Screen brightness at minimum
  • Bluetooth off
  • Wireless radio off
  • Idle draw of 14.9-15.0 W

Setup C

  • Power saver PPD profile
  • 60 Hz refresh rate
  • Screen brightness at minimum
  • Bluetooth off
  • Wireless radio off
  • Idle draw of 14.3-14.5 W

Setup D

  • Identical to setup C, but I disabled fractional scaling (so UI is just at 100%)
  • Idle draw at 14.4-14.5 W

On a Windows install, NotebookCheck reported getting as low as 9.5 W on idle.

Phoronix on an Ubuntu 23.10 + 6.7 kernel + GNOME 45.2 install got as low as a 2.01 W draw, though this was probably on hibernation?

I’m wondering what other optimizations beyond powertop + PPD profiles are available to optimize battery life, or whether these are as efficient as we can expect to get with the current kernel and PPD.

Has anyone successfully undervolted the Ryzen 9 7940HS?

Are you running your measurements with power adapter plugged in? The EC does tune the APU coefficients based on the size of the power connected.

Hi,

I find it is the RAM that eats most of the idle power, because it does not down-clock in power save modes, only the CPU down-clocks.
Your 96GB of RAM is probably the main cause.

What’s the point of having it upgradable if you can’t put much ram in it anyways for batteries sake

Power saving modes should account for this

@Gulfam_Rana_Amd
Its not Framework specific. RAM is a power problem across all X86 platforms. ARM platforms have it sorted.

1 Like

I did do ram power testing on the 13 and found it was much less of an issue than I expected, 4800 and 5600 were within margin of error (<0.2W) of each other when using one or 2 sticks and using just one stick only saves you a barely measurable 0.2-0.3W at the cost of half your memory bandwidth. I highly doubt capacity makes much of a difference either but I am not getting more sticks to test that.

2 Likes

I did come across someone with 64gb get 4h on Ubuntu and another guy using 8gb got 10-14h on Windows

I also found its ~0.08w for every gb of ram, it would add up to 5.12w VS 0.6w per refresh of ram (or whatever the exact term for that was)

No, these measurements were all done on battery (unplugged).

1 Like

Here are some numbers from an older Dell XPS 17 (9700):

Hardware

Intel i7-10875H (8C/16T) (14nm process)
NVIDIA 960M GPU (6GB GDDR5)
64GB DDR4 RAM (2x32GB), 2667 MT/S
1x Samsung 970 Pro, 1TB
1x SK Hynix PC611, 1TB
Intel AX201 WiFi 6 card
60Hz 1080p display 

Software

Bios 1.24.0
Ubuntu 20.04.6 LTS
Kernel 5.15.0-97 Generic
Display resolution at 1920x1200, 60Hz (59.95Hz), no fractional scaling
X11 (v11), X.Org (v1.20.13)
GNOME Shell 3.36.9
TLP 1.3.1 

With all powertop tunables set to “Good”, and no undervolting

Setup A

  • Screen brightness at minimum
  • Bluetooth on
  • WiFi on
  • Idle draw of 4.9-5.4 W

Setup B

  • Same as A, with Bluetooth off
  • Idle draw of 3.29-4.7 W

Setup C

  • Same as B, with WiFi off
  • Idle draw of 3.17-4.85 W

I’m happy to provide any other data/specs as needed, but it seems strange to me that my 2020 Dell XPS is getting substantially better efficiency/battery life numbers. The Ryzen 9 7940 HS is on a substantially newer process, DDR5 is more efficient than DDR4, the newer Samsung SSDs are more power efficient, etc.

So you are comparing linux and windows numbers and then blame it on the ram? There are still quite a few power consumption issues with the amd platform on linux (especially with video playback) that could explain the power difference a lot better than ram.

In my testing there was no measurable difference between a single stick of 16gb 4800mhz crucial and a single stick of 32gb 5600mhz kingston.

How exactly did you arrive at those numbers?

It can most likely be other factors at play, which is why I made sure to specify linux/windows, but I thought maybe it still played a role in it bcs I came across that 0.08 number in an older forum somewhere else and calculated those numbers for 8gb and 64gb with it and thought something like that could explain some of the difference

I guess I was wrong since you tested it

I just got mine today, my arch install seemed to idle somewhere around 8W. I plan to do more testing when I can, but 15W is definitely not what I was seeing. I do not have the dGPU module.

I’m also running powertop autotune and autocpu-freq

2 Likes

Do you have the GPU module as well?

Also, are you able to reach the GPU by invoking nvtop? For me, nvtop reports No GPU to monitor, but powertop still reports some draw (0.3-0.5 W) from a process called amdgpu. Probably the iGPU (780M)?

I do not, from what I’ve seen on other threads though the idle power consumption is actually pretty good and I wouldn’t expect to be at 15W.

For me, nvtop did at least show my iGPU though.

So on my XPS 17, even on idle nvidia-smi reports that my GPU uses ~3W of energy, so some of the discrepancy in our idle power usage may be down to the GPU module’s idle draw.


More importantly, I was able to reduce my idle draw substantially (user error in this case).

I was running Warp terminal (which I use on my desktop on both Ubuntu and MacOS). Even though it’s billed as an Electron-free, Rust-based terminal, it turns out it was using significant energy.

With the native GNOME terminal, and the following setup:

  • “Power saver” PPD profile
  • powertop tunables set to “Good” (with the exception of the USB 2.0 and 2.1 devices)
  • 2560x1600 resolution, 125% fractional scaling, 165 Hz
  • Minimum brightness
  • Bluetooth off, WiFi on
  • Idle draw of 8.35-8.91 W

If I reduce the refresh rate to 60 Hz, I’m seeing 7.64-8.49 W idle draw.

So, the TLDR is if you’re going for max battery life, stick with the GNOME terminal! :sweat_smile:

Does anyone (@Matt_Hartley perhaps?) know what the status of variable refresh rate (VRR) support is on Ubuntu or Wayland (more generally?).

Happy to hear your root cause.

Vrr status:

I know this is a thread for Ubuntu 22.04, but I’m gonna throw in my own 2 cents. One metric I’m personally a fan of is the minimum power draw during idle. So far with my arch install I’ve seen my FW 16 get down to -6.3W, with it usually sitting between -7.5W and -11W.

I tried using ryzenadj to fix the CPU to 1W draw, which seemed to more consistently stabalize the draw to around 8W, but I don’t know enough about the technical details to know if it’s doing exactly what I think it is. I do know that having ryzenadj limiting power vs not results in lower powerdraw while running stress -c 16

I’d like to see how far down I can possible get that minimum draw to, it’s usually at least valuable information regarding each components power draw.

1 Like

Kneecapping it that hard is also murdering your performance/w, unless you have a workload that just loads up everything and you can’t stop this’ll make your laptop feel slow as hell and actually use more power for the same work.

May want to look at my findings about performance/w

Some of my workloads (offline text editing/writing) are very light and could be handled by a raspi, so in those cases the only thing I care about is battery. But yes, if you need more performance, 1W would certainly hinder it! Interestingly enough I was still able to web-browse on it, but it was a noticeable performance hit.

I’m going to give your post a read, it certainly looks like some good content.

If your workload doesn’t exceed the power limit anyway the power limit won’t make much difference, if your test editing uses too much power you may want to take a look at your background tasks.

Power limit doesn’t seem to influence idle and near idle usage anyway in my experience.