AMD P-State EPP Performance With EPYC On Linux 6.3
Among the many new features coming in Linux 6.3 -- including many AMD additions -- is the AMD P-State EPP "Energy Performance Preference" support being merged for modern Ryzen and EPYC systems. AMD P-State EPP can further help tune the performance and power efficiency of AMD Linux systems beyond the existing basic AMD P-State driver support and address some existing deficiencies. Here are some benchmarks of the AMD P-State and ACPI CPUFreq driver configurations benchmarked on an EPYC Milan-X server with the in-development Linux 6.3 kernel.
Using the mature AMD Daytona reference server with two EPYC 7773X "Milan X" processors I benchmarked the generic ACPI CPUFreq driver, AMD P-State, and AMD P-State EPP in the various configurations for seeing the impact on the overall CPU power consumption and performance per-Watt results of these CPU frequency scaling driver changes.
All tests were done on Ubuntu 22.04 LTS while using a Linux 6.3 Git state just prior to 6.3-rc1 having been tagged. The same system configuration was used for all the benchmarks -- the CPU frequency difference in the automated table just comes down to ACPI CPUFreq vs. P-State reporting differences of base/turbo clock frequency reporting.
With P-State EPP there is not only the CPU frequency scaling governor to toggle for better power/performance control but also the Energy Performance Preference hint that can be adjusted for either balance_performance (the default), power, or performance. So with all the different configurations at play that meant testing the main configurations of:
- amd_pstate_epp powersave balance_performance
- amd_pstate_epp performance balance_performance
- amd_pstate_epp powersave power
- amd_pstate_epp performance performance
- amd_pstate schedutil
- amd_pstate performance
- amd_pstate powersave
- amd_pstate ondemand
- acpi_cpufreq schedutil
- acpi_cpufreq ondemand
- acpi_cpufreq performance
The EPYC 7773X 2P power consumption was monitored using the RAPL/PowerCap sysfs interface while carrying out dozens of different benchmarks on all these configurations. The peak CPU frequency was also monitored for seeing the peak clock frequency achieved on any of the cores during each benchmark run as was the CPU temperature monitoring.