ACPI CPPC CPUFreq Will Try Frequency Invariance Again For Linux 5.14
Frequency invariance support for the ACPI CPPC CPUFreq driver originally landed in Linux 5.13 but was reverted late in the cycle due to problems (possible kernel oops) while now that's been cleaned up and is trying again for Linux 5.14 with this functionality striving for more accurate load tracking.
Linux frequency invariance support has been a hot topic with various drivers / kernel code seeing adaptations by different vendors. Fundamentally the frequency invariance is about addressing the issue of tasks appearing larger if the CPU is running slower so the frequency invariance takes into account the current frequency (or performance state) relative to the maximum possible frequency (or maximum performance state). What's new for Linux 5.14 (after being dropped in 5.13) is the ACPI CPPC (Collaborative Processor Performance Control) CPUFreq driver now having frequency invariance support.
The ACPI CPPC CPUFreq driver is most notably used by some Arm platforms and this frequency invariance support was added by Arm / Linaro engineers. As the cppc_cpufreq driver doesn't know the the CPU hardware frequency itself, this addition is relying on arch-specific counter support and hooks into the kernel's scheduler code. This optional frequency invariance handling is exposed via a new Kconfig build time knob of CONFIG_ACPI_CPPC_CPUFREQ_FIE. The end result is more accurate load tracking with ideally smarter CPU frequency scaling decisions.
This support was sent in on Wednesday as part of this pull request containing a second round of power management updates for the Linux 5.14 merge window. See this earlier article for details on the power management work that landed in the kernel last week.
Linux frequency invariance support has been a hot topic with various drivers / kernel code seeing adaptations by different vendors. Fundamentally the frequency invariance is about addressing the issue of tasks appearing larger if the CPU is running slower so the frequency invariance takes into account the current frequency (or performance state) relative to the maximum possible frequency (or maximum performance state). What's new for Linux 5.14 (after being dropped in 5.13) is the ACPI CPPC (Collaborative Processor Performance Control) CPUFreq driver now having frequency invariance support.
The ACPI CPPC CPUFreq driver is most notably used by some Arm platforms and this frequency invariance support was added by Arm / Linaro engineers. As the cppc_cpufreq driver doesn't know the the CPU hardware frequency itself, this addition is relying on arch-specific counter support and hooks into the kernel's scheduler code. This optional frequency invariance handling is exposed via a new Kconfig build time knob of CONFIG_ACPI_CPPC_CPUFREQ_FIE. The end result is more accurate load tracking with ideally smarter CPU frequency scaling decisions.
This support was sent in on Wednesday as part of this pull request containing a second round of power management updates for the Linux 5.14 merge window. See this earlier article for details on the power management work that landed in the kernel last week.
4 Comments