AMD has been on a roll over the past year making significant strides in power management across the Linux stack.
Most of this work is centered around support for p-state.
To take advantage you should run a newer Linux kernel. Here are some of the improvements from each recent release:
Use power-profiles-daemon 0.20+ which sets the appropriate p-state driver based on the selected battery profile.
Upcoming changes:
- More kernel improvements
- Firmware and kernel module updates (distro dependendent; e.g. Debian)
Kudos to AMD principal engineer Mario Limonciello for driving these changes across the board!
This is one advantage of increased competition (e.g. from the Apple M series); the entire ecosystem is pushed forward.
I am personally benefiting immensely from these improvements on my new Thinkpad t14s with AMD 7840U (battery life going from 4-5 hours to easily 10+ hours).
Finally we don’t have to settle anymore for underwhelming battery life on Linux laptops :)
Agreed! On a Lenovo Yoga Slim 7 X, I also had a big, big boost of battery life. It’s really great how far it came in comparison to a few months ago!
I have recently bought the P14s Gen 4 and except for some WiFi issues it has been pretty smooth sailing (definitely a loot better then the last notebook I had with nvidia dgpu).
I also noticed the fans spin less often and that the low power profile doesn’t make the computer noticeably slower and “stutterier” to use like it used to.
I am so happy power-profiles-daemon now sets the CPU driver instead of only setting the platform_driver when it is present. It was a big pain point of mine.
Also want to appreciate the idle efficiency improvements! My AMD laptop only loses a few % of battery life after idling overnight (with the default s2idle sleep mode). A huge improvement to my older work Intel ThinkPad which loses over 25% overnight…
Would a desktop CPU (Zen3) also benefit from these improvements?
Yes, Zen 2 and above support p-states! You might need to update your bios and enable CPPC if p-state is not showing up.
You can confirm by running
$ powerprofilesctl
and seeing if CpuDriver is amd_pstate.Thx, I will try that. When configuring my kernel I saw it and left it in the default config “active” (I was upgrading to the latest LTS kernel today). I did not check how I can interact with it as a user, yet.
is ppd better for amd than tlp?
Yes. You should not use tlp anymore on any AMD processor that supports p-states. TLP does not support these and it’s own logic may conflict with the CPU. Use PPD and let the processor itself take care of the optimizations!
See: https://community.frame.work/t/tracking-ppd-v-tlp-for-amd-ryzen-7040/39423
Do I have to manually install PPD?
PPD comes default on most distros (I can at least confirm for Debian, Ubuntu and Fedora on the GNOME variant). I am not sure about KDE variants but they should support it too even if it’s not pre-installed.
You can check if it’s running with the following command:
$ powerprofilesctl
However as the 0.20 release which supports p-state just released recently most fixed point release distros won’t have the newer version. In this case you would need to update it manually.
I am running Debian testing and it has the new version while stable does not.
You shouldn’t use
sudo
to runpowerprofilesctl
Good point, edited!