tools: create power/x86/x86_energy_perf_policy
commitd5532ee7b40b4a64e605e543b0387694430ecb79
authorLen Brown <len.brown@intel.com>
Sat, 23 Oct 2010 03:53:03 +0000 (22 23:53 -0400)
committerLen Brown <len.brown@intel.com>
Wed, 12 Jan 2011 04:02:21 +0000 (11 23:02 -0500)
tree1411d02a42ca83156d37ce6d62c031afc465a5e1
parentf6f94e2ab1b33f0082ac22d71f66385a60d8157f
tools: create power/x86/x86_energy_perf_policy

MSR_IA32_ENERGY_PERF_BIAS first became available on Westmere Xeon.
It is implemented in all Sandy Bridge processors -- mobile, desktop and server.
It is expected to become increasingly important in subsequent generations.

x86_energy_perf_policy is a user-space utility to set the
hardware energy vs performance policy hint in the processor.
Most systems would benefit from "x86_energy_perf_policy normal"
at system startup, as the hardware default is maximum performance
at the expense of energy efficiency.

See x86_energy_perf_policy.8 man page for more information.

Background:

Linux-2.6.36 added "epb" to /proc/cpuinfo to indicate
if an x86 processor supports MSR_IA32_ENERGY_PERF_BIAS,
without actually modifying the MSR.

In March, 2010, Venkatesh Pallipadi proposed a small driver
that programmed MSR_IA32_ENERGY_PERF_BIAS, based on
the cpufreq governor in use.  It also offered
a boot-time cmdline option to override.
http://lkml.org/lkml/2010/3/4/457
But hiding the hardware policy behind the
governor choice was deemed "kinda icky".

In June, 2010, I proposed a generic user/kernel API to
generalize the power/performance policy trade-off.
"RFC: /sys/power/policy_preference"
http://lkml.org/lkml/2010/6/16/399
That is my preference for implementing this capability,
but I received no support on the list.

So in September, 2010, I sent x86_energy_perf_policy.c to LKML,
a user-space utility that scribbles directly to the MSR.
http://lkml.org/lkml/2010/9/28/246

Here is that same utility, after responding to some review feedback,
to live in tools/power/, where it is easily found.

Signed-off-by: Len Brown <len.brown@intel.com>
tools/power/x86/x86_energy_perf_policy/Makefile [new file with mode: 0644]
tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.8 [new file with mode: 0644]
tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c [new file with mode: 0644]