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