214 lines
8.1 KiB
Groff
214 lines
8.1 KiB
Groff
.\" This page Copyright (C) 2010 - 2015 Len Brown <len.brown@intel.com>
|
|
.\" Distributed under the GPL, Copyleft 1994.
|
|
.TH X86_ENERGY_PERF_POLICY 8
|
|
.SH NAME
|
|
x86_energy_perf_policy \- Manage Energy vs. Performance Policy via x86 Model Specific Registers
|
|
.SH SYNOPSIS
|
|
.B x86_energy_perf_policy
|
|
.RB "[ options ] [ scope ] [field \ value]"
|
|
.br
|
|
.RB "scope: \-\-cpu\ cpu-list | \-\-pkg\ pkg-list"
|
|
.br
|
|
.RB "cpu-list, pkg-list: # | #,# | #-# | all"
|
|
.br
|
|
.RB "field: \-\-all | \-\-epb | \-\-hwp-epp | \-\-hwp-min | \-\-hwp-max | \-\-hwp-desired"
|
|
.br
|
|
.RB "other: (\-\-force | \-\-hwp-enable | \-\-turbo-enable) value)"
|
|
.br
|
|
.RB "value: # | default | performance | balance-performance | balance-power | power"
|
|
.SH DESCRIPTION
|
|
\fBx86_energy_perf_policy\fP
|
|
displays and updates energy-performance policy settings specific to
|
|
Intel Architecture Processors. Settings are accessed via Model Specific Register (MSR)
|
|
updates, no matter if the Linux cpufreq sub-system is enabled or not.
|
|
|
|
Policy in MSR_IA32_ENERGY_PERF_BIAS (EPB)
|
|
may affect a wide range of hardware decisions,
|
|
such as how aggressively the hardware enters and exits CPU idle states (C-states)
|
|
and Processor Performance States (P-states).
|
|
This policy hint does not replace explicit OS C-state and P-state selection.
|
|
Rather, it tells the hardware how aggressively to implement those selections.
|
|
Further, it allows the OS to influence energy/performance trade-offs where there
|
|
is no software interface, such as in the opportunistic "turbo-mode" P-state range.
|
|
Note that MSR_IA32_ENERGY_PERF_BIAS is defined per CPU,
|
|
but some implementations
|
|
share a single MSR among all CPUs in each processor package.
|
|
On those systems, a write to EPB on one processor will
|
|
be visible, and will have an effect, on all CPUs
|
|
in the same processor package.
|
|
|
|
Hardware P-States (HWP) are effectively an expansion of hardware
|
|
P-state control from the opportunistic turbo-mode P-state range
|
|
to include the entire range of available P-states.
|
|
On Broadwell Xeon, the initial HWP implementation, EBP influenced HWP.
|
|
That influence was removed in subsequent generations,
|
|
where it was moved to the
|
|
Energy_Performance_Preference (EPP) field in
|
|
a pair of dedicated MSRs -- MSR_IA32_HWP_REQUEST and MSR_IA32_HWP_REQUEST_PKG.
|
|
|
|
EPP is the most commonly managed knob in HWP mode,
|
|
but MSR_IA32_HWP_REQUEST also allows the user to specify
|
|
minimum-frequency for Quality-of-Service,
|
|
and maximum-frequency for power-capping.
|
|
MSR_IA32_HWP_REQUEST is defined per-CPU.
|
|
|
|
MSR_IA32_HWP_REQUEST_PKG has the same capability as MSR_IA32_HWP_REQUEST,
|
|
but it can simultaneously set the default policy for all CPUs within a package.
|
|
A bit in per-CPU MSR_IA32_HWP_REQUEST indicates whether it is
|
|
over-ruled-by or exempt-from MSR_IA32_HWP_REQUEST_PKG.
|
|
|
|
MSR_HWP_CAPABILITIES shows the default values for the fields
|
|
in MSR_IA32_HWP_REQUEST. It is displayed when no values
|
|
are being written.
|
|
|
|
.SS SCOPE OPTIONS
|
|
.PP
|
|
\fB-c, --cpu\fP Operate on the MSR_IA32_HWP_REQUEST for each CPU in a CPU-list.
|
|
The CPU-list may be comma-separated CPU numbers, with dash for range
|
|
or the string "all". Eg. '--cpu 1,4,6-8' or '--cpu all'.
|
|
When --cpu is used, \fB--hwp-use-pkg\fP is available, which specifies whether the per-cpu
|
|
MSR_IA32_HWP_REQUEST should be over-ruled by MSR_IA32_HWP_REQUEST_PKG (1),
|
|
or exempt from MSR_IA32_HWP_REQUEST_PKG (0).
|
|
|
|
\fB-p, --pkg\fP Operate on the MSR_IA32_HWP_REQUEST_PKG for each package in the package-list.
|
|
The list is a string of individual package numbers separated
|
|
by commas, and or ranges of package numbers separated by a dash,
|
|
or the string "all".
|
|
For example '--pkg 1,3' or '--pkg all'
|
|
|
|
.SS VALUE OPTIONS
|
|
.PP
|
|
.I normal | default
|
|
Set a policy with a normal balance between performance and energy efficiency.
|
|
The processor will tolerate minor performance compromise
|
|
for potentially significant energy savings.
|
|
This is a reasonable default for most desktops and servers.
|
|
"default" is a synonym for "normal".
|
|
.PP
|
|
.I performance
|
|
Set a policy for maximum performance,
|
|
accepting no performance sacrifice for the benefit of energy efficiency.
|
|
.PP
|
|
.I balance-performance
|
|
Set a policy with a high priority on performance,
|
|
but allowing some performance loss to benefit energy efficiency.
|
|
.PP
|
|
.I balance-power
|
|
Set a policy where the performance and power are balanced.
|
|
This is the default.
|
|
.PP
|
|
.I power
|
|
Set a policy where the processor can accept
|
|
a measurable performance impact to maximize energy efficiency.
|
|
|
|
.PP
|
|
The following table shows the mapping from the value strings above to actual MSR values.
|
|
This mapping is defined in the Linux-kernel header, msr-index.h.
|
|
|
|
.nf
|
|
VALUE STRING EPB EPP
|
|
performance 0 0
|
|
balance-performance 4 128
|
|
normal, default 6 128
|
|
balance-power 8 192
|
|
power 15 255
|
|
.fi
|
|
.PP
|
|
For MSR_IA32_HWP_REQUEST performance fields
|
|
(--hwp-min, --hwp-max, --hwp-desired), the value option
|
|
is in units of 100 MHz, Eg. 12 signifies 1200 MHz.
|
|
|
|
.SS FIELD OPTIONS
|
|
\fB-a, --all value-string\fP Sets all EPB and EPP and HWP limit fields to the value associated with
|
|
the value-string. In addition, enables turbo-mode and HWP-mode, if they were previous disabled.
|
|
Thus "--all normal" will set a system without cpufreq into a well known configuration.
|
|
.PP
|
|
\fB-B, --epb\fP set EPB per-core or per-package.
|
|
See value strings in the table above.
|
|
.PP
|
|
\fB-d, --debug\fP debug increases verbosity. By default
|
|
x86_energy_perf_policy is silent for updates,
|
|
and verbose for read-only mode.
|
|
.PP
|
|
\fB-P, --hwp-epp\fP set HWP.EPP per-core or per-package.
|
|
See value strings in the table above.
|
|
.PP
|
|
\fB-m, --hwp-min\fP request HWP to not go below the specified core/bus ratio.
|
|
The "default" is the value found in IA32_HWP_CAPABILITIES.min.
|
|
.PP
|
|
\fB-M, --hwp-max\fP request HWP not exceed a the specified core/bus ratio.
|
|
The "default" is the value found in IA32_HWP_CAPABILITIES.max.
|
|
.PP
|
|
\fB-D, --hwp-desired\fP request HWP 'desired' frequency.
|
|
The "normal" setting is 0, which
|
|
corresponds to 'full autonomous' HWP control.
|
|
Non-zero performance values request a specific performance
|
|
level on this processor, specified in multiples of 100 MHz.
|
|
.PP
|
|
\fB-w, --hwp-window\fP specify integer number of microsec
|
|
in the sliding window that HWP uses to maintain average frequency.
|
|
This parameter is meaningful only when the "desired" field above is non-zero.
|
|
Default is 0, allowing the HW to choose.
|
|
.SH OTHER OPTIONS
|
|
.PP
|
|
\fB-f, --force\fP writes the specified values without bounds checking.
|
|
.PP
|
|
\fB-U, --hwp-use-pkg\fP (0 | 1), when used in conjunction with --cpu,
|
|
indicates whether the per-CPU MSR_IA32_HWP_REQUEST should be overruled (1)
|
|
or exempt (0) from per-Package MSR_IA32_HWP_REQUEST_PKG settings.
|
|
The default is exempt.
|
|
.PP
|
|
\fB-H, --hwp-enable\fP enable HardWare-P-state (HWP) mode. Once enabled, system RESET is required to disable HWP mode.
|
|
.PP
|
|
\fB-t, --turbo-enable\fP enable (1) or disable (0) turbo mode.
|
|
.PP
|
|
\fB-v, --version\fP print version and exit.
|
|
.PP
|
|
If no request to change policy is made,
|
|
the default behavior is to read
|
|
and display the current system state,
|
|
including the default capabilities.
|
|
.SH WARNING
|
|
.PP
|
|
This utility writes directly to Model Specific Registers.
|
|
There is no locking or coordination should this utility
|
|
be used to modify HWP limit fields at the same time that
|
|
intel_pstate's sysfs attributes access the same MSRs.
|
|
.PP
|
|
Note that --hwp-desired and --hwp-window are considered experimental.
|
|
Future versions of Linux reserve the right to access these
|
|
fields internally -- potentially conflicting with user-space access.
|
|
.SH EXAMPLE
|
|
.nf
|
|
# sudo x86_energy_perf_policy
|
|
cpu0: EPB 6
|
|
cpu0: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
|
|
cpu0: HWP_CAP: low 1 eff 8 guar 27 high 35
|
|
cpu1: EPB 6
|
|
cpu1: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
|
|
cpu1: HWP_CAP: low 1 eff 8 guar 27 high 35
|
|
cpu2: EPB 6
|
|
cpu2: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
|
|
cpu2: HWP_CAP: low 1 eff 8 guar 27 high 35
|
|
cpu3: EPB 6
|
|
cpu3: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
|
|
cpu3: HWP_CAP: low 1 eff 8 guar 27 high 35
|
|
.fi
|
|
.SH NOTES
|
|
.B "x86_energy_perf_policy"
|
|
runs only as root.
|
|
.SH FILES
|
|
.ta
|
|
.nf
|
|
/dev/cpu/*/msr
|
|
.fi
|
|
.SH "SEE ALSO"
|
|
.nf
|
|
msr(4)
|
|
Intel(R) 64 and IA-32 Architectures Software Developer's Manual
|
|
.fi
|
|
.PP
|
|
.SH AUTHORS
|
|
.nf
|
|
Len Brown
|