The AMD EPYC 9005 “Turin” processors that launched last year offer excellent performance and power efficiency out-of-the-box. For those wanting to pursue maximum power efficiency and running in the most optimal configuration for performance-per-Watt, AMD EPYC BIOS tunables as well as recent Linux kernel driver improvements can help in driving even greater efficiency. Today’s article is a look at the impact of the AMD P-State driver usage and options with recent kernel versions as well as the Power Profile Selection BIOS option for the impact on 5th Gen EPYC performance and power efficiency.
As covered in several Phoronix articles over the past few months, with the Linux 6.13 kernel and newer the AMD P-State driver is used by default on EPYC 9005/Turin processors and future AMD server processors moving forward — assuming the server platform/motherboard supports ACPI Collaborative Processor Performance Control (CPPC). Over the generic ACPI CPUFreq CPU frequency scaling driver, the AMD P-State driver is able to make more informed frequency/power selection and paired with Energy Performance Preference (EPP) hints that can be set by the user / server administrators, there is much greater power/performance control than with ACPI CPUFreq as is used by default on pre-6.13 kernels and prior generation AMD EPYC servers.
Those not having read the prior Phoronix articles on AMD P-State for EPYC servers can find all of the kernel driver documentation on kernel.org. Simply put, this transition from ACPI CPUFreq to AMD P-State can allow for greater performance and power efficiency when moving to a Linux 6.13+ kernel. Adjusting the EPP value allows for communicating your preference for performance or power efficiency.
In addition to the ACPI EPP value, via the server BIOS the “Power Profile Selection” can be set for going from the default high performance mode to an efficiency mode, maximum I/O performance, balanced memory performance, balanced core performance, or balanced core memory performance mode. Alternatively, the Power Profile Selection can also be adjusted at run-time using the AMD HSMP/APML software. For those really wanting to optimize for power efficiency without compromising much performance, the “Balanced Memory Performance” mode is recommended for most workloads in constraining the memory/fabric/xGMI performance to workload bandwidth and latency needs while utilizing the remaining TDP for maximizing the CPU core frequency.
For this article I tested the following CPU frequency scaling governor and driver modes, EPP values, and Power Profile Selections for demonstrating the impact of these changes on AMD EPYC 9005 power and performance:
acpi-cpufreq performance [Old Default] – The default on pre-6.13 kernels where ACPI CPUFreq is used with the performance governor and default Power Profile.
amd-pstate performance, EPP performance [New Default] – The “new” default on Linux 6.13+ for those using an AMD EPYC 9005 series server that supports ACPI CPPC. The AMD P-State driver with performance CPU frequency governor and EPP “performance” preference and the default (high performance) Power Profile selection.
amd-pstate powersave, EPP power – The AMD P-State default above but switching to a “power” Energy Performance Preference bias.
amd-pstate powersave, EPP power, Balanced Memory – Switching over to the “Balanced Memory” Power Profile selection and with EPP power setting and using the powersave governor.
amd-pstate powersave, EPP performance, Balanced Memory – Switching over to the “Balanced Memory” Power Profile selection and with EPP performance setting and using the powersave governor. This is one of the recommended configurations by AMD engineers for those wanting to maximize their power efficiency on modern Linux servers. ([R] for recommended on graphs.)
amd-pstate powersave, EPP performance – Using the default High Performance Power Profile while switching to the powersave governor and performance EPP preference.
acpi-cpufreq schedutil – The “old” default of using ACPI CPUFreq and for Linux distributions that default to using the scheduler utilization governor “Schedutil” rather than the performance governor.
All of this testing was done on the AMD Volcano reference server platform using two AMD EPYC 9755 processors. These 128-core Zen 5 server processors were running at their default speeds and other defaults except where otherwise noted (the difference in clock speed from the system table amounts to sysfs reporting differences for the clock speed depending upon whether ACPI CPUFreq or AMD P-State was utilized).
Dozens of different benchmarks were carried out across these different power/performance configurations for this dual AMD EPYC 9755 server running Ubuntu 24.10 with the Linux 6.13 stable kernel. The CPU power consumption, thermals, and peak core frequency were monitored during each benchmark being run.