A patch has been proposed for the Linux kernel to add a C1 demotion knob via /sys/devices/system/cpu/cpuidle/c1_demotion for more control over lower power state handling for recent Xeon Scalable processors. This C1 demotion knob can help with the performance of some workloads for Intel Xeon servers but at the cost of increased power consumption.
The proposed patch would introduce /sys/devices/system/cpu/cpuidle/c1_demotion for enabling/disabling C1 demotion across Intel Xeon Sapphire Rapids, Emerald Rapids, Granite Rapids, Sierra Forest, and Grand Ridge processors.
The documentation patch on the C1 demotion feature explains the functionality of this new code to be tacked onto the Intel Idle driver:
“Enable or disable C1 demotion for all CPUs in the system. This file is only exposed on platforms that support the C1 demotion feature and where it was tested. Value 0 means that C1 demotion is disabled, value 1 means that it is enabled. Write 0 or 1 to disable or enable C1 demotion for all CPUs.
The C1 demotion feature involves the platform firmware demoting deep C-state requests from the OS (e.g., C6 requests) to C1. The idea is that firmware monitors CPU wake-up rate, and if it is higher than a platform-specific threshold, the firmware demotes deep C-state requests to C1. For example, Linux requests C6, but firmware noticed too many wake-ups per second, and it keeps the CPU in C1. When the CPU stays in C1 long enough, the platform promotes it back to C6. This may improve some workloads’ performance, but it may also increase power consumption.”
The patch is now under review for hopefully making it into an upcoming Linux kernel merge window — potentially in time for next month’s v6.15. Will be interesting to benchmark this C1 demotion patch when ready for quantifying the performance and power impact.