RFC: /sys/power/policy_preference

From: Len Brown
Date: Wed Jun 16 2010 - 17:05:49 EST


Create /sys/power/policy_preference, giving user-space
the ability to express its preference for kernel based
power vs. performance decisions in a single place.

This gives kernel sub-systems and drivers a central place
to discover this system-wide policy preference.
It also allows user-space to not have to be updated
every time a sub-system or driver adds a new power/perf knob.

policy_preference has 5 levels, from max_performance
through max_powersave. Here is how 4 parts of the kernel
might respond to those 5 levels:

max_performance (unwilling to sacrifice any performance)
scheduler: default (optimized for performance)
cpuidle: disable all C-states except polling mode
ondemand: disable all P-states except max perf
msr_ia32_energy_perf_bias: 0 of 15

performance (care primarily about performance)
scheduler: default (optimized for performance)
cpuidle: enable all C-states subject to QOS
ondemand: all P-states, using no bias
msr_ia32_energy_perf_bias: 3 of 15

balanced (default)
scheduler: enable sched_mc_power_savings
cpuidle: enable all C-states subject to QOS
ondemand: all P-states, powersave_bias=5
msr_ia32_energy_perf_bias: 7 of 15

powersave (can sacrifice measurable performance)
scheduler: enable sched_smt_power_savings
cpuidle: enable all C-states, subject to QOS
ondemand: disable turbo mode, powersave_bias=10
msr_ia32_energy_perf_bias: 11 of 15

max_powersave (can sacrifice significant performance)
scheduler: enable sched_smt_power_savings
cpuidle: enable all C-states, subject to QOS
ondemand: min P-state (do not invoke T-states)
msr_ia32_energy_perf_bias: 15 of 15

Note that today Linux is typically operating in the mode
called "performance" above, rather than "balanced",
which is proposed to be the default. While a system
should work well if left in "balanced" mode, it is likely
that some users would want to use "powersave" when on
battery and perhaps shift to "performance" on A/C.

Please let me know what you think.

thanks,
Len Brown, Intel Open Source Technology Center
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/