File Index
Files and directories
Sign in
FILE

x86_energy_perf_policy.8

File preview with syntax highlighting.

linux-6.19.14/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.8 GROFF
  1.\"  This page Copyright (C) 2010 - 2015 Len Brown <len.brown@intel.com>
  2.\"  Distributed under the GPL, Copyleft 1994.
  3.TH X86_ENERGY_PERF_POLICY 8
  4.SH NAME
  5x86_energy_perf_policy \- Manage Energy vs. Performance Policy
  6.SH SYNOPSIS
  7.B x86_energy_perf_policy
  8.RB "[ options ] [ scope ] [field \ value]"
  9.br
 10.RB "scope: \-\-cpu\ cpu-list | \-\-pkg\ pkg-list"
 11.br
 12.RB "cpu-list, pkg-list: # | #,# | #-# | all"
 13.br
 14.RB "field: \-\-all | \-\-epb | \-\-hwp-epp | \-\-hwp-min | \-\-hwp-max | \-\-hwp-desired"
 15.br
 16.RB "other: (\-\-force | \-\-hwp-enable | \-\-turbo-enable)  value)"
 17.br
 18.RB "value: # | default | performance | balance-performance | balance-power | power"
 19.SH DESCRIPTION
 20\fBx86_energy_perf_policy\fP
 21displays and updates energy-performance policy settings specific to
 22Intel Architecture Processors.  It summarizes settings available
 23in standard Linux interfaces (eg. cpufreq),
 24and also decodes underlying Model Specific Register (MSRs).
 25While \fBx86_energy_perf_policy\fP can manage energy-performance policy
 26using only MSR access, it prefers standard
 27Linux kernel interfaces, when they are available.
 28
 29.SH BACKGROUND
 30Policy in MSR_IA32_ENERGY_PERF_BIAS (EPB)
 31may affect a wide range of hardware decisions,
 32such as how aggressively the hardware enters and exits CPU idle states (C-states)
 33and Processor Performance States (P-states).
 34This policy hint does not replace explicit OS C-state and P-state selection.
 35Rather, it tells the hardware how aggressively to implement those selections.
 36Further, it allows the OS to influence energy/performance trade-offs where there
 37is no software interface, such as in the opportunistic "turbo-mode" P-state range.
 38Note that MSR_IA32_ENERGY_PERF_BIAS is defined per CPU,
 39but some implementations
 40share a single MSR among all CPUs in each processor package.
 41On those systems, a write to EPB on one processor will
 42be visible, and will have an effect, on all CPUs
 43in the same processor package.
 44
 45Hardware P-States (HWP) are effectively an expansion of hardware
 46P-state control from the opportunistic turbo-mode P-state range
 47to include the entire range of available P-states.
 48On Broadwell Xeon, the initial HWP implementation, EPB influenced HWP.
 49That influence was removed in subsequent generations,
 50where it was moved to the
 51Energy_Performance_Preference (EPP) field in
 52a pair of dedicated MSRs -- MSR_IA32_HWP_REQUEST and MSR_IA32_HWP_REQUEST_PKG.
 53
 54EPP is the most commonly managed knob in HWP mode,
 55but MSR_IA32_HWP_REQUEST also allows the user to specify
 56minimum-frequency for Quality-of-Service,
 57and maximum-frequency for power-capping.
 58MSR_IA32_HWP_REQUEST is defined per-CPU.
 59
 60MSR_IA32_HWP_REQUEST_PKG has the same capability as MSR_IA32_HWP_REQUEST,
 61but it can simultaneously set the default policy for all CPUs within a package.
 62A bit in per-CPU MSR_IA32_HWP_REQUEST indicates whether it is
 63over-ruled-by or exempt-from MSR_IA32_HWP_REQUEST_PKG.
 64
 65MSR_HWP_CAPABILITIES shows the default values for the fields
 66in MSR_IA32_HWP_REQUEST.  It is displayed when no values
 67are being written.
 68
 69.SS SCOPE OPTIONS
 70.PP
 71\fB-c, --cpu\fP Operate on the MSR_IA32_HWP_REQUEST for each CPU in a CPU-list.
 72The CPU-list may be comma-separated CPU numbers, with dash for range
 73or the string "all".  Eg. '--cpu 1,4,6-8' or '--cpu all'.
 74When --cpu is used, \fB--hwp-use-pkg\fP is available, which specifies whether the per-cpu
 75MSR_IA32_HWP_REQUEST should be over-ruled by MSR_IA32_HWP_REQUEST_PKG (1),
 76or exempt from MSR_IA32_HWP_REQUEST_PKG (0).
 77
 78\fB-p, --pkg\fP Operate on the MSR_IA32_HWP_REQUEST_PKG for each package in the package-list.
 79The list is a string of individual package numbers separated
 80by commas, and or ranges of package numbers separated by a dash,
 81or the string "all".
 82For example '--pkg 1,3' or '--pkg all'
 83
 84.SS VALUE OPTIONS
 85.PP
 86.I normal | default
 87Set a policy with a normal balance between performance and energy efficiency.
 88The processor will tolerate minor performance compromise
 89for potentially significant energy savings.
 90This is a reasonable default for most desktops and servers.
 91"default" is a synonym for "normal".
 92.PP
 93.I performance
 94Set a policy for maximum performance,
 95accepting no performance sacrifice for the benefit of energy efficiency.
 96.PP
 97.I balance-performance
 98Set a policy with a high priority on performance,
 99but allowing some performance loss to benefit energy efficiency.
100.PP
101.I balance-power
102Set a policy where the performance and power are balanced.
103This is the default.
104.PP
105.I power
106Set a policy where the processor can accept
107a measurable performance impact to maximize energy efficiency.
108
109.PP
110The following table shows the mapping from the value strings above to actual MSR values.
111This mapping is defined in the Linux-kernel header, msr-index.h.
112
113.nf
114VALUE STRING      	EPB	EPP
115performance       	0	0
116balance-performance	4	128
117normal, default		6	128
118balance-power	 	8	192
119power       		15	255
120.fi
121.PP
122For MSR_IA32_HWP_REQUEST performance fields
123(--hwp-min, --hwp-max, --hwp-desired), the value option
124is in units of 100 MHz, Eg. 12 signifies 1200 MHz.
125
126.SS FIELD OPTIONS
127\fB-a, --all value-string\fP Sets all EPB and EPP and HWP limit fields to the value associated with
128the value-string.  In addition, enables turbo-mode and HWP-mode, if they were previous disabled.
129Thus "--all normal" will set a system without cpufreq into a well known configuration.
130.PP
131\fB-B, --epb\fP set EPB per-core or per-package.
132See value strings in the table above.
133.PP
134\fB-d, --debug\fP debug increases verbosity.  By default
135x86_energy_perf_policy is silent for updates,
136and verbose for read-only mode.
137.PP
138\fB-P, --hwp-epp\fP set HWP.EPP per-core or per-package.
139See value strings in the table above.
140.PP
141\fB-m, --hwp-min\fP request HWP to not go below the specified core/bus ratio.
142The "default" is the value found in IA32_HWP_CAPABILITIES.min.
143.PP
144\fB-M, --hwp-max\fP request HWP not exceed a the specified core/bus ratio.
145The "default" is the value found in IA32_HWP_CAPABILITIES.max.
146.PP
147\fB-D, --hwp-desired\fP request HWP 'desired' frequency.
148The "normal" setting is 0, which
149corresponds to 'full autonomous' HWP control.
150Non-zero performance values request a specific performance
151level on this processor, specified in multiples of 100 MHz.
152.PP
153\fB-w, --hwp-window\fP specify integer number of microsec
154in the sliding window that HWP uses to maintain average frequency.
155This parameter is meaningful only when the "desired" field above is non-zero.
156Default is 0, allowing the HW to choose.
157.SH OTHER OPTIONS
158.PP
159\fB-f, --force\fP writes the specified values without bounds checking.
160.PP
161\fB-U, --hwp-use-pkg\fP (0 | 1), when used in conjunction with --cpu,
162indicates whether the per-CPU MSR_IA32_HWP_REQUEST should be overruled (1)
163or exempt (0) from per-Package MSR_IA32_HWP_REQUEST_PKG settings.
164The default is exempt.
165.PP
166\fB-H, --hwp-enable\fP enable HardWare-P-state (HWP) mode.  Once enabled, system RESET is required to disable HWP mode.
167.PP
168\fB-t, --turbo-enable\fP enable (1) or disable (0) turbo mode.
169.PP
170\fB-v, --version\fP print version and exit.
171.PP
172If no request to change policy is made,
173the default behavior is to read
174and display the current system state,
175including the default capabilities.
176.SH WARNING
177.PP
178This utility writes directly to Model Specific Registers.
179There is no locking or coordination should this utility
180be used to modify HWP limit fields at the same time that
181intel_pstate's sysfs attributes access the same MSRs.
182.PP
183Note that --hwp-desired and --hwp-window are considered experimental.
184Future versions of Linux reserve the right to access these
185fields internally -- potentially conflicting with user-space access.
186.SH EXAMPLE
187.nf
188# sudo x86_energy_perf_policy
189cpu0: EPB 6
190cpu0: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
191cpu0: HWP_CAP: low 1 eff 8 guar 27 high 35
192cpu1: EPB 6
193cpu1: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
194cpu1: HWP_CAP: low 1 eff 8 guar 27 high 35
195cpu2: EPB 6
196cpu2: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
197cpu2: HWP_CAP: low 1 eff 8 guar 27 high 35
198cpu3: EPB 6
199cpu3: HWP_REQ: min 6 max 35 des 0 epp 128 window 0x0 (0*10^0us) use_pkg 0
200cpu3: HWP_CAP: low 1 eff 8 guar 27 high 35
201.fi
202.SH NOTES
203.B "x86_energy_perf_policy"
204runs only as root.
205.SH FILES
206.ta
207.nf
208EPB: /sys/devices/system/cpu/cpu*/power/energy_perf_bias
209EPP: /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference
210MSR: /dev/cpu/*/msr
211.fi
212.SH "SEE ALSO"
213.nf
214msr(4)
215Intel(R) 64 and IA-32 Architectures Software Developer's Manual
216.fi
217.PP
218.SH AUTHORS
219.nf
220Len Brown
~/ Read-only file preview.