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.
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.
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.
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.
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.
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.
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.
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.
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:
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).
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
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