The Linux kernel 6.5 introduces the AMD P-State Energy Performance Preference (EPP) driver as the default CPU frequency scaling driver for AMD Ryzen Zen 2 and newer processors. This change aims to provide finer control over CPU frequencies, which can lead to better performance and power efficiency. However, users running AMD systems on Linux 6.5 have reported mixed results, with some experiencing reduced battery life and increased heat, while others notice improved thermal management and responsiveness. Adjusting kernel parameters and power management tools can help tailor your system for optimal performance and battery life.
Disabling AMD P-State Driver to Improve Battery Life and Thermals
While AMD P-State is designed to optimize CPU frequency scaling by offering more granular control, it may not always yield the best battery life on all systems, particularly laptops with AMD Ryzen mobile processors. Some users have found that reverting to the older ACPI CPUFreq driver improves battery runtime and reduces heat generation.
Step 1: Add the kernel boot parameter to disable the AMD P-State driver. This can be done by appending amd_pstate=disable
to your kernel boot options.
On systems using systemd-boot, such as Pop!\_OS, run the following command to add the parameter permanently:
sudo kernelstub -a amd_pstate=disable
For other bootloaders like GRUB, edit the GRUB configuration file (usually /etc/default/grub
) and add amd_pstate=disable
to the GRUB_CMDLINE_LINUX_DEFAULT
line. After editing, update GRUB with:
sudo update-grub
Step 2: Reboot your system to apply the changes. Upon reboot, the system will revert to using the ACPI CPUFreq driver for CPU frequency scaling.
This change has been reported to increase battery life significantly on some AMD Ryzen laptops, reducing CPU temperatures and fan noise by limiting boost frequencies and allowing more effective power management.
Using Tuxedo Control Center for Fine-Tuned Power Profiles
Tuxedo Control Center is a user-friendly tool that allows you to customize CPU core usage and disable CPU boost features without compromising overall system responsiveness. This tool can be especially useful if you want to balance performance and power consumption manually.
Step 1: Install Tuxedo Control Center. Depending on your distribution, you can download it from the official Tuxedo Computers website or through your package manager if available.
Step 2: Use the application to create a power profile that limits the number of active CPU cores and disables boost frequencies. For example, setting a maximum frequency cap and disabling boost can keep CPU temperatures low and extend battery life.
Step 3: Apply this profile consistently, even when plugged in, if you prefer quieter operation and lower heat output without noticeable performance loss.
Users with AMD Ryzen 7 6800U or 6850U processors have reported achieving over 10 hours of battery life with such profiles while maintaining silent fan operation under light workloads.
Switching CPU Frequency Governors and Managing Profiles
Linux kernel 6.5 changes the default CPU frequency governor behavior with AMD P-State, often defaulting to 'powersave' and 'performance' modes. You can manually set the CPU governor to better suit your needs.
Step 1: Install the cpupower
utility if not already installed. On Ubuntu-based distributions, use:
sudo apt install linux-tools-common linux-tools-$(uname -r)
Step 2: Check the available governors and current settings:
cpupower frequency-info
Step 3: Set the governor to 'powersave' for better battery life or 'performance' for maximum responsiveness:
sudo cpupower frequency-set -g powersave
or
sudo cpupower frequency-set -g performance
Step 4: To make this setting persistent across reboots, create a systemd service file named cpu-governor.service
in /etc/systemd/system/
with the following content:
[Unit]
Description=Set CPU frequency governor
[Service]
Type=oneshot
ExecStart=/usr/bin/cpupower frequency-set -g powersave
[Install]
WantedBy=multi-user.target
Replace powersave
with your desired governor if different.
Step 5: Enable and start the service:
sudo systemctl enable cpu-governor.service
sudo systemctl start cpu-governor.service
This ensures your CPU frequency governor preference is applied automatically on boot.
Testing Different Kernels for Optimal Performance
Some users report that newer kernels like Linux 6.5 bring improved power management features for AMD systems, while others find kernels like 6.2 or 6.4 more stable or better for battery life on their specific hardware. If you experience issues after upgrading to 6.5, consider testing different kernel versions.
Step 1: Use your distribution's kernel management tools or package manager to install alternative kernel versions. For example, Ubuntu-based distros allow installing mainline kernels via the Ubuntu Mainline Kernel PPA.
Step 2: Reboot and select the desired kernel from your bootloader menu.
Step 3: Monitor system performance, battery life, and thermals under typical workloads to identify which kernel version offers the best balance.
Keep in mind that bleeding-edge kernels may introduce compatibility issues, so choose kernels that your distribution officially supports or that have widespread community testing.
Additional Tips for Managing Battery Life on AMD Linux Systems
- Limit CPU core usage and disable boost features via tools like Tuxedo Control Center to lower power consumption.
- Monitor CPU temperature and frequency using utilities like
cpupower
,htop
, or GNOME system monitors. - Adjust screen brightness and disable unnecessary background services to further extend battery life.
- Keep your system updated with the latest stable kernel and power management tools for ongoing improvements.
Optimizing AMD Linux systems running kernel 6.5 involves balancing the new AMD P-State driver benefits against potential drawbacks on specific hardware. Disabling AMD P-State, fine-tuning CPU frequency governors, and using power management tools can significantly improve battery life and reduce heat, providing a smoother and longer-lasting user experience.
Member discussion