Generic Governors Support Coming For Intel P-State
Rafael Wysocki of Intel has been hacking an interesting improvement into the Intel P-State CPU frequency scaling driver for the Linux kernel.
Rafael Wysocki, the Linux PM/ACPI maintainer, has been working on support for being able to use generic CPUFreq governors within the P-State driver, which would allow using things like the Schedutil governor within this scaling driver used by modern Intel CPUs.
Wysocki explained with the experimental patch he's hoping to see tested by the Linux community:
Rafael Wysocki, the Linux PM/ACPI maintainer, has been working on support for being able to use generic CPUFreq governors within the P-State driver, which would allow using things like the Schedutil governor within this scaling driver used by modern Intel CPUs.
Wysocki explained with the experimental patch he's hoping to see tested by the Linux community:
There may be reasons to use generic cpufreq governors (eg. schedutil) on Intel platforms instead of the intel_pstate driver's internal governor. However, that currently can only be done by disabling intel_pstate altogether and using the acpi-cpufreq driver instead of it, which is subject to limitations.Should be fun to test and hopefully will see mainline support for intel_pstate=passive in the Linux 4.10 kernel.
First of all, acpi-cpufreq only works on systems where the _PSS object is present in the ACPI tables for all logical CPUs. Second, on those systems acpi-cpufreq will only use frequencies listed by _PSS which may be suboptimal. In particular, by convention, the whole turbo range is represented in _PSS as a single P-state and the frequency assigned to it is greater by 1 MHz than the greatest non-turbo frequency listed by _PSS. That may confuse governors to use turbo frequencies less frequently which may lead to suboptimal performance.
For this reason, make it possible to use the intel_pstate driver with generic cpufreq governors as a "normal" cpufreq driver. That mode is enforced by adding intel_pstate=passive to the kernel command line and cannot be disabled at run time. In that mode, intel_pstate provides a cpufreq driver interface including the ->target() and ->fast_switch() callbacks and is listed in scaling_driver as "intel_cpufreq".
1 Comment