Framework 16 Power Consumption Benchmarks

I’ve been doing some tests on Framework 16 power consumption, and wanted to share my results so far. Feel free to share your thoughts, or questions in this thread so everyone can get the best battery life and performance out of their Framework 16.

Test Setup

  • Batch 3 Framework 16
  • 7840HS
  • 7700s module (or default fan module in some tests - noted when used)
  • 4TB Lexar NM790 SSD
  • 2x16GB Corsair DDR5-5600
  • Backlit Keyboard module, and trackpad module - backlight off in all tests
  • 1xUSB-C and 1xUSB-A module installed in the top 2 left ports (usb-c in the back-most port for best power efficiency)
  • Default Framework Driver bundle for Windows 11, default installs via the installation guides from Framework for Ubuntu and Fedora
  • Arch was installed with Gnome and Power Profiles Daemon, and the open source amd driver stack. I tried both the standard Linux kernel, and the Linux Zen kernel, but neither had a noticeable impact on power consumption in my tests.

Methodology

  • Brightness set to minimum unless otherwise noted
  • speakers at 0% volume unless otherwise noted
  • screen at 165Hz unless otherwise noted
  • power management set to balanced (on both windows, and PPD on linux) unless otherwise noted
  • video playback was hardware accelerated unless otherwise noted
  • Power consumption was measured via the battery drain metrics from btop on linux, or hwinfo64 on Windows
  • To gather the power consumption result, I would set up the test scenario, and wait for the power drain to stabilize. If the power didn’t vary by more than .5W for 60 seconds, I took the power measurement rounded to the nearest half watt. Typically power measurements would stabilize within 5 minutes for any test - longer for tests where the machine had to throttle down to idle compared to tests where it had to throttle up to higher performance
  • In the Minecraft Tests, I used Minecraft 1.20.4 with Sodium 0.5.8 under the fabric mod loader (sodium basically triples fps with no notable side effects)
    • I used a freshly generated superflat world in creative mode for reproducibility

Issues to aware of

  • the power draw figures from the tools I used are running averages, and especially at low power consumption, background process, and natural variability caused fluctuations of up to half a watt.
  • Any measurements should be taken as an average, and real world results (especially idle results) will be heavily influenced by things as simple as moving the mouse causing the processor to throttle up its frequency
  • Silicon quality will have some effect on the results as better silicon may allow the processor to hit the same frequency at a lower voltage

Windows 11:

  • I used a fresh install of Windows 11 Pro with no modifications other than installing Firefox, Minecraft via Prismlauncher, and HWINFO64

Idle Power Consumption

  • baseline: 6.5W
  • baseline on Power Saver: 6.5W
  • Baseline on Power Saver at 60Hz: 5.5W
  • baseline without 7700s: 6.5W
  • Baseline without 7700s on Power Saver: 6.5W
  • Baseline without 7700s on Power Saver at 60Hz: 5.5W

Video Playback

  • 1080p youtube video: 10W
  • 2160p youtube video: 12W

Minecraft on Battery

  • 1080p60Hz on 7700s Standing Still: 32W
  • 1080p60Hz on 7700s Moving: 34W
    • the frametimes were inconsistent with consistent jumps from 16.6ms to 33.3ms about every 2 seconds.
  • I forgot to test on the 780m for windows… will have to come back to it

Ubuntu 22.04

  • Linux Kernel 6.5.0
  • PPD 0.10.1
  • Mesa 23.2.1

Idle Power Consumption

  • baseline: 7.5W
  • baseline on Power Saver: 7.5W
  • Baseline on Power Saver at 60Hz: 7W

Video Playback

  • 1080p youtube video: 11.5W
  • 2160p youtube video: 12.5W

Minecraft on Battery

  • failed to launch - some sort of issue with the stock version of amdgpu and mesa on Ubuntu 22.04
  • I imagine using a newer version of ubuntu using a newer kernel released after rdna3 came out could fix this issue

Fedora 39

  • Linux kernel 6.5.6
  • PPD 0.13 (balanced unless otherwise noted)
  • Mesa 23.2.1

Idle Power Consumption

  • baseline: 8.5W
  • baseline on Power Saver: 8.5W
  • Baseline on Power Saver at 60Hz: 7W

Video Playback

  • 1080p youtube video: 17W
  • 2160p youtube video: 19W
    • these results are surprisingly high, but I did confirm that hardware acceleration was working, and the media engine was reporting a similar amount of usage at around 40% compared to other operating systems. I’m not sure what is wrong here on fedora

Minecraft on Battery

  • 1080p60Hz on 7700s Standing Still: 30W
  • 1080p60Hz on 7700s Standing Still: 33W
    • the frametimes were solid
  • 1080p60Hz on 780m Standing Still: 16.5W
  • 1080p60Hz on 780m Moving: 22W

Arch Linux

  • Linux kernel 6.7.8 (official linux-zen package)
  • PPD 0.20
  • Mesa 24.0.2

Idle Power Consumption

  • baseline: 7W
  • baseline on Power Saver: 7W
  • Baseline on Power Saver at 60Hz: 6W
  • baseline without 7700s: 7W
  • Baseline without 7700s on Power Saver: 7W
  • Baseline without 7700s on Power Saver at 60Hz: 6W

Video Playback

  • 1080p youtube video: 11.5W
  • 2160p youtube video: 12.5W
  • 1080p youtube video without hw acceleration: 8.5W
  • 2160p youtube video without hw acceleration: 22W
    • I accidentally discovered this when I forgot to enable vaapi in firefox’s settings, but it does show that maybe the cpu is more efficent for lower overhead codecs/resolutions… at 4K the power draw went up a lot, and wouldn’t be worth it

Minecraft on Battery

  • 1080p60Hz on 7700s Standing Still: 25W
  • 1080p60Hz on 7700s Standing Still: 30W
    • the frametimes were solid
  • 1080p60Hz on 780m Standing Still: 12.5W
  • 1080p60Hz on 780m Moving: 17.5W
    • I’m not sure why Arch was so much more efficient here - I’m guessing its because of efficiency improvements in the amdgpu driver in the newer kernel?

Conclusions

On Windows, the power consumption behavior seemed a lot spikier. Windows seemed a lot happier to boost the system to its 4.9Ghz boost frequency, even on balanced mode just for clicking on things in the web browser, and I saw the power spike up as high as 20W from idle just interacting with the windows I already had open. I think that there could be a lot to be learned by doing some more “real world” tests on the windows side for battery life.

Anecdotally on linux, I’ve been getting 5-6 hours of real world battery life with mixed light usage, but I don’t have windows installed permanently on my disk to do more long term testing with it.

I think it is interesting that Windows has the best absolute low power consumption at idle, but I’m not sure how much impact that really has in real world use. I also think it would be worth following up with some tests with powertop tweaks on linux that could improve results more. When I tried powertop --auto-tune, there were some annoying side effects with the keyboard and trackpad going to sleep, and taking a second to respond after 10 seconds idle, but that could probably be worked around.

I think it was also interesting how much better the performance of Minecraft was on linux compared to windows. I don’t have the hard data here, but I do have anecdotal data. All the operating systems were able to hold a 60FPS average with the framerate cap in place, but Fedora and Arch had perfectly smooth frametimes with the 7700s, while Windows was really struggling to avoid microstutter. I could feel it in the mouse responsiveness, and see it in Minecraft’s F3 screen. I wonder if Linux is more liberal with letting the 7700s run at higher power levels on battery, or if there is some sort of driver issue with the stock drivers on Windows.

It’s also good to see that the 7700s seems to have a negligible impact on power consumption when it isn’t actively being used on both Arch and Windows where I tested it.

That’s all I’ve got for now, but I’ll probably do some more battery testing in the future, as well as maybe some game performance testing.

13 Likes

Thamk you for the very extensive testing!
I wonder how much some TLP or autocpu-freq could help!

I’m definitely gonna test TLP even though the official guidance is to use PPD since it officially supports AMD P-States or something like that. I had a great experience with TLP on the 1135g7 framework 13. As for autocpu-freq, I’ve always been skeptical about how useful it is since modern cpu’s aggressively downclock already when they aren’t doing anything, but I might as well give it a try too while I’m benchmarking. I should have time this weekend to try both under the same conditions I tested already with PPD.

1 Like

Similar descriptions are missing for the linux distro configurations.
Did you apply the PPD optimizations before testing?

Does Linux enable smart access memory?
I actually found on windows, disabling SAM reduced a ton of stutter in several games, even if the overall frame rate dropped slightly.

Could try testing with SAM disabled to see if Windows does any better. Then again, it’s 11, there’s always the possibility it’s just Microsoft’s latest phone home nonsense spinning up in the background too.

You should ideally be noting versions you use for the kernel PPD, and mesa for each of your Linux tests because these have a BIG impact.

Also did you make a mistake in Arch? 67W idle seems high.

Lastly windows enables ABM by default, you need a new enough PPD and specific kernel patches for this in Linux.

3 Likes

Sorry, I completely blanked on adding that. I’ll edit the original post to clarify. Fedora and Ubuntu were running their stock kernel, and Arch was running the official linux-zen package. I’ll double check the exact versions before I add them to the original post.

All of the Linux installs were running PPD exclusively (no powertop/autocpu-freq/tlp). They were run in balanced mode unless otherwise specified. I did note that power saver mode didn’t seem to have much impact in the tests that I did. I think different tests would better show the differences between each mode better.

I’m not sure about that. I imagine that one could get windows running smoothly under similar conditions, but I didn’t take the time to debug it at all other than just running the test and moving on. I might come back to that in the future if I decide I want to run Windows on it.

That was a typo, it should be 6.7 watts, or really just rounded to 7 watts with the accuracy of my tests.

As for the versions of each component, I’ll go check, and add that information to the original post. I didn’t do any kernel patching, or any custom packages for PPD because I was trying to see the default power consumption on each system following the official install guide (if available) without much tweaking. I also saw that Arch just pushed linux 6.8 to stable right after I tested, so that might have some effects as well.

what software do you use to view the wattage in fedora? and have you tried to see if the curve optimizer would work to undervolt the cpu?

Great work putting this together! You’re results are more-or-less consistent with my own testing under basically the same methodology except I use power saving profiles instead of balanced and I don’t have a dGPU module. On my Arch install I see about 6W draw for 60hz and 7W at 165 during idle. It’ll dip as far as 5.4W, but I’ve never seen it go below that on Arch.
Arch:

  • PPD v0.2
  • KDE Plasma 6
  • Kernel 6.7.9

I recently experimented with installing Gentoo however (which took me several days admittedly), and had some interesting battery findings. Once I got PPD and Plasma setup, my average idle draw was ~5W with semi-regular dips to 4.8W. This leads me to believe that there are still opportunities for optimization on Arch, but unfortunately I’m not certain where the power draw difference comes from. It could be due the nature of all applications being complied on-and-for the framework specifically, but I’m not certain. If I unplogged the expansion modules, I could reduce power draw by an additional 0.2W, down to 4.6W.

Gentoo:

  • PPD v0.2
  • KDE Plasma 5.x
  • Kernel 6.8.1

I didn’t know about btop, I’ve been using powertop and polybar to gather usage stats. This app is awesome! Sharing the same interest for battery efficiency, I put together a minimum power-draw competition. Perhaps you’d be interested in participating.

4 Likes

Yeah, I think for your use case of finding the absolute minimum power consumption, powertop may still be better… not sure how cpu efficient btop is compared to powertop as I regularly see it using .5 to 1.5% cpu (even if the frequency doesn’t go above the minimum 400MHz).

I did a bit of testing to see how low I could push power consumption, but I’ll post that over on your thread.

1 Like

PPD 0.10 and 0.13 from Ubuntu 22.04 and Fedora 39 respectively are missing support for CPU + Platform together, so I expect that’s at least part of the reason for the difference to Arch.

You can use my PPA on Ubuntu and if you do the Fedora 39 normal updates to get 0.20.

Hopefully with 0.20 you get more consistent results.

There is also another change added after 0.20 that’s not yet in a released version for making balanced behave differently on AC vs Battery. FYI this is in my PPA but not in Fedora.

3 Likes

I did some testing on my Arch install. If I optimize arch down to 5.3W of usage, I can further decrease power draw by 0.8W by removing all usb-modules, keyboards, and tracpad. Thus I think it’s reasonable to say the sum draw of those components is about 0.8W

Additionally, under this same setup I experimented with the (US English) keyboard at full brightness vs lighting off and was surprised to find a 1.9W difference! The keyboard backlight seems to draw nearly 2W on it’s own.

Another thing I’ve noticed during some additional testing, is that when I powertop --auto-tune on my Arch install with KDE, I don’t get any of the keyboard/tracpad wakeup issues, but on the same config if I close the graphical environment and operate in TTY that issue returns.

2 Likes

That’s a good point. I am a little surprised framework doesn’t even mention this in their official installation guides as the newer kernels and PPD versions seem to have a really meaningful impact, and presumably will have even more impact when the abm patches are integrated in 6.9 (hopefully?).

I would imagine it’s not called out for the sake of simplicity. Those who really want to know, will, and those who don’t will eventually get the changes anyways once they get through the process.

I’m running Arch Linux on my FW13 (I don’t have an FW16), I noticed that during 1080P youtube streaming, switching to full screen makes the power consumption goes from 12W to 20W(consumption is a bit higher due to measuring USBC power input), so what’s the problem with youtube (no consumption increases in video playback on VLC)? and OP could you please publish video playback both windowed and fullscreen and compare them?

What platform are you using on the framework 13? Intel or AMD? It could be several different things, but my first guess is that hardware decoding isn’t working on your browser specifically since vlc isn’t consuming as much power. See these arch wiki article for some more details:

firefox specific: Firefox - ArchWiki
chromium specific: Chromium - ArchWiki

In general, it is easier to get working on Firefox in my experience - just a single option in the about:config page, but both can be made to work. The power consumption should be basically equivalent between fullscreen and windowed playback at the same resolution. I just did a quick test on the FW16, and fullscreen playback was actually .5W cheaper (probably just system noise though).

1 Like

I already installed libva-mesa-driver and mesa-vdpau, enabled gfx.webrender.all and media.ffmpeg.vaapi.enabled. In the about:support the Compositing is WebRender, however I also saw this


there are lots of “Unsupported”, how can I enable support these?

However this does not explain the discrepancy of windowed vs fullscreen, I discovered that the Miniplayer function increases the power consumption as much as fullscreen, I guess that something is wrong with LXQt, maybe I should use GNOME instead

Anyone with the 7940 do an undevolt? If you do, what’s the power savings (if any noticeable), and performance difference.

Trying to decide if it’s worth waiting longer and cancel my exiting 7480 and get at the back of the line for 7940.

Hmm, yeah I’m not sure then. Youtube is usually serving either vp9 or av1 these days, so you should be good on that end. I’m not sure why LXQT would have an effect, but its worth trying another DE if you think it might be the source of the issue. I’ve observed normal fullscreen playback power consumption on arch on gnome on both my framework 16, and my 11th gen intel framework 13, but I don’t have any insights other than that.

Double checked with Fedora 39 (still on FW13). Now both windowed and fullscreen 1080P youtube streaming consume about 12W(measured from USB-C input voltage and current). However when moving the mouse to show the progress bar, the consumption will go to 21W. I guess it’s indeed GUI related