Processor power policy on Windows
Information on this page applies to Windows 7 and ealier versions of the Windows operating system. For information about processor power management on Windows 10, see Configure processor power management options.
Windows 7 and Windows Server 2008 R2 include a rich set of power policy settings that can influence and control the Windows kernel power manager algorithms for choosing target Processor Power Management (PPM) states. This topic describes these PPM policy settings and their effect on Windows kernel power manager behavior and use of PPM features.
This information applies to the following operating systems:
- Windows Server 2008 R2
- Windows 7
These power policy settings are not intended to be changed by users and are not exposed in the Control Panel Power Options application. Although most systems do not require adjustment to these settings, they are provided to let system manufacturers and system administrators optimize the Windows PPM behavior.
For example, PPM policy settings can be used to do the following:
- Adapt Windows kernel power manager use of PPM controls to the specific PPM features and characteristics of processors from different manufacturers.
- Account for the differences in PPM implementations or its intended application across various system roles or target workloads.
- Fine-tune Windows kernel power manager use of PPM features to account for specific system implementations, such as chipsets, system devices, and interconnects.
- Enable OEMs to offer power policies that are tuned for their specific systems and customer or market segment needs.
Usage guidelines
Most Windows 7 systems do not require changes to the PPM policy settings. However, systems that have unique processor and chipset combinations or systems that include devices that have compatibility issues with the default PPM policies might require changes to some of the PPM policy settings.
These policies are intended for static use only in Windows power plans. That is, the policy settings can be set for specific power plans, for use on both AC and DC power, and take effect when the user changes the active Windows power plan or changes the power source from AC power to battery power. Microsoft does not support any use of PPM policies other than for static configuration through Windows power plans.
These policy settings should not be exposed to the user in custom power control software. OEMs are encouraged to refrain from creating such software and should limit the use of these policy settings only to default power plan customization. Changing these policy settings to an incorrect combination of values can negatively impact system energy efficiency, performance, and responsiveness.
Firmware implementation of processor power policy
We have observed systems that control processor performance policy from the system firmware. Specifically, the system firmware can use processor-specific registers to throttle the performance of the system without notifying Windows. Similarly, we have observed systems that constantly limit the maximum processor performance state when the system is running on battery power.
We encourage system manufacturers to leverage Windows power policy to enforce processor performance state limits. Implementing processor policy in the system firmware instead of leveraging Windows power policy can cause performance and responsiveness issues that users might not be able to diagnose. Additionally, some users require maximum system performance when running their computers on battery power and are not aware that the underlying system firmware might be limiting the processor performance. Implementing default processor performance policy by using Windows power policy lets users override the OEM defaults in Power Options in Control Panel. This can help reduce OEM support issues with users who try to obtain maximum performance at the expense of battery life.
Windows 7 power policy store
To use the processor policy settings that are described in this section, it is important to first understand how power policies are defined and stored in Windows 7.
The following fundamental rules apply:
- Individual power settings for the system or for devices are grouped into power plans. A power plan is a group of power setting values that help achieve a given power mode or overall power preference. The default power plans for Windows 7 are High Performance, Balanced, and Power Saver.
- Every power setting belongs to a logical subgroup of related settings. Some examples of these subgroups include system sleep settings, display settings, and PPM settings.
- Each power setting has both an AC and a DC value. The AC value is used when the system is plugged in (running on AC power). The DC value is used with the system is powered by a battery (running on DC power).
- Every power setting is identified by a unique globally unique identifier (GUID).
- Changing a power setting simply changes that value in the underlying power policy store. For the updated value to take effect on the system, a power plan that uses the new power setting value must be applied to the system.
The most significant change in Windows 7 compared to Windows Vista in relation to the power settings is that in Windows 7 the PPM policies are all discrete power setting values in the power policy store. In Windows Vista, the processor power settings were grouped into collections of settings such as Performance State settings (ppmperf) or Idle State settings (ppmidle). In Windows 7, each power setting is an individual top-level setting within the PPM settings subgroup.
For example, to change the value of the Processor Performance Time Check Interval setting on Windows Vista, the current time check interval value must first be retrieved by running the PowerCfg tool with the /ppmidle and /decode command-line options. Then, the value for the setting can be updated, re-encoded (by using the /encode command-line option), and applied to the system. However, for Windows 7, the Processor Performance Time Check Interval setting is its own setting in the PPM settings subgroup and its value can be updated directly by running the PowerCfg tool with the /setacvalueindex or /setdcvalueindex command-line option.
For more information about how to use the PowerCfg tool, see Power Policy Configuration and Deployment in Windows.
Processor power policy settings
This section provides details on the processor power policy settings that are available in Windows 7 to influence kernel power manager use of PPM. All the following settings are part of the Processor Power Management Settings (SUB_PROCESSOR) subgroup.
Processor performance policy settings
These policy settings configure the processor performance state (P-state) algorithm. Except for the Processor Performance Minimum Processor State and Processor Performance Maximum Processor State settings, these policy settings should not be changed without consultation from the system processor vendor or manufacturer. Changes to PPM policy settings require extensive validation for power savings and system performance.
Processor Performance Increase Threshold
Description | The percentage of processor utilization, in terms of maximum processor utilization, that is required to increase the processor to a higher performance state. |
GUID | 06cadf0e-64ed-448a-8927-ce7bf90eb35d |
PowerCfg Alias | Not applicable |
Minimum Value | 0 |
Maximum Value | 100 |
Label | Percentage (%) |
Hidden | Yes |
Processor Performance Decrease Threshold
Description | The percentage of processor utilization, in terms of maximum processor utilization, that is required to reduce the processor to a lower performance state. |
GUID | 12a0ab44-fe28-4fa9-b3bd-4b64f44960a6 |
PowerCfg Alias | Not applicable |
Minimum Value | 0 |
Maximum Value | 100 |
Label | Percentage (%) |
Hidden | Yes |
Allow Throttle States
Description | Specifies that the performance state algorithm can use any ACPI throttle states (T-states) that the system supports. |
GUID | 3b04d4fd-1cc7-4f23-ab1c-d1337819c4bb |
PowerCfg Alias | Not applicable |
Possible Values |
IndexNameDescription
0Disabled .Throttle states are not used
1EnabledThrottle states can be used. However, the processor throttle state does not change adaptively. When enabled, the Minimum Processor State and Maximum Processor State settings can be used to lock the system processors into a specific processor throttle state.
|
Hidden | Yes |
Processor Performance Decrease Policy
Description | Specifies how a target performance state is selected if the current processor utilization is below the value of the Processor Performance Decrease Threshold setting. |
GUID | 40fbefc7-2e9d-4d25-a185-0cfd8574bac6 |
PowerCfg Alias | Not applicable |
Possible Values |
IndexNameDescription
0Ideal A target performance state is selected based on calculating which performance state increases the processor utilization to just above the value of the Processor Performance Decrease Threshold setting.
1SingleThe next lowest performance state (compared to the current performance state) is selected.
2RocketThe lowest performance state is selected.
|
Hidden | Yes |
Processor Performance Increase Policy
Description | Specifies how a target performance state is selected if the current processor utilization is above the value of the Processor Performance Increase Threshold setting. |
GUID | 465e1f50-b610-473a-ab58-00d1077dc418 |
PowerCfg Alias | Not applicable |
Possible Values |
IndexNameDescription
0Ideal A target performance state is selected based on calculating which performance state decreases the processor utilization to just below the value of the Processor Performance Increase Threshold setting.
1SingleThe next highest performance state (compared to the current performance state) is selected.
2RocketThe highest performance state is selected.
|
Hidden | Yes |
Processor Performance Time Check Interval
Description | Specifies the duration, in milliseconds, between subsequent evaluations of the processor performance state and Core Parking algorithms. |
GUID | 4d2b0152-7d5c-498b-88e2-34345392a2c5 |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 5000 |
Label | Milliseconds (ms) |
Hidden | Yes |
Processor Performance History Count
Description | Specifies the number of Processor Performance Time Check Intervals over which a processor’s performance history is tracked. |
GUID | 7d24baa7-0b84-480f-840c-1b0743c00f5f |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 128 |
Label | Time Check Intervals |
Hidden | Yes |
Minimum Processor State
Description | Specifies the minimum processor performance state. The performance state is specified as a percentage of maximum processor frequency. |
GUID | 893dee8e-2bef-41e0-89c6-b55d0929964c |
PowerCfg Alias | PROCTHROTTLEMIN |
Minimum Value | 0 |
Maximum Value | 100 |
Label | Percentage (%) |
Hidden | No |
Maximum Processor State
Description | Specifies the maximum processor performance state. The performance state is specified as a percentage of maximum processor frequency. |
GUID | bc5038f7-23e0-4960-96da-33abaf5935ec |
PowerCfg Alias | PROCTHROTTLEMAX |
Minimum Value | 0 |
Maximum Value | 100 |
Label | Percentage (%) |
Hidden | No |
Processor Performance Decrease Time
Description | Specifies the minimum amount of time that must elapse between subsequent reductions in the processor performance state. The time is specified in units of the number of Processor Performance Time Check Intervals. |
GUID | d8edeb9b-95cf-4f95-a73c-b061973693c8 |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 100 |
Label | Time Check Intervals |
Hidden | Yes |
Processor Performance Increase Time
Description | Specifies the minimum amount of time that must elapse between subsequent increases in the processor performance state. The time is specified in units of the number of Processor Performance Time Check Intervals. |
GUID | 984cf492-3bed-4488-a8f9-4286c97bf5aa |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 100 |
Label | Time Check Intervals |
Hidden | Yes |
Processor Performance Boost Policy
Description | Configures the processor performance boost policy. The behavior of this setting can differ between processor vendors and specific processor models. The processor vendor should be consulted before changing the value of this setting. |
GUID | 45bcc044-d885-43e2-8605-ee0ec6e96b59 |
PowerCfg Alias | Not applicable |
Minimum Value | 0 |
Maximum Value | 100 |
Label | Percentage (%) |
Hidden | Yes |
Processor Core Parking policy settings
These policy settings configure the Core Parking algorithm parameters. These policy settings should not be changed without consultation from the system processor vendor.
Processor Performance Core Parking Increase Threshold
Description | The percentage of processor utilization (in terms of maximum processor utilization across all unparked logical processors in the system) that is required to transition additional logical processors from the parked state to the unparked state. |
GUID | df142941-20f3-4edf-9a4a-9c83d3d717d1 |
PowerCfg Alias | Not applicable |
Minimum Value | 5 |
Maximum Value | 90 |
Label | Percentage (%) |
Hidden | Yes |
Processor Performance Core Parking Decrease Threshold
Description | The percentage of processor utilization (in terms of maximum processor utilization across all unparked logical processors in the system) that is required to transition additional logical processors from the unparked state to the parked state. |
GUID | 68dd2f27-a4ce-4e11-8487-3794e4135dfa |
PowerCfg Alias | Not applicable |
Minimum Value | 5 |
Maximum Value | 90 |
Label | Percentage (%) |
Hidden | Yes |
Processor Performance Core Parking Overutilization Threshold
Description | The percentage of processor utilization (in terms of maximum processor utilization for a single logical processor) above which a given logical processor is determined to be overutilized. An overutilized logical processor is a logical processor that is in the parked state with processor utilization that is greater than the value of this setting. This occurs when the logical processor is running sufficient affinitized work. This setting helps the Core Parking algorithm identify which particular logical processors to transition from the parked state to the unparked state. |
GUID | 943c8cb6-6f93-4227-ad87-e9a3feec08d1 |
PowerCfg Alias | Not applicable |
Minimum Value | 5 |
Maximum Value | 100 |
Label | Percentage (%) |
Hidden | Yes |
Processor Performance Core Parking Increase Policy
Description | Specifies the number of logical processors to transition from the parked state to the unparked state when the processor utilization across all unparked logical processors in the system exceeds the value of the Processor Performance Core Parking Increase Threshold setting. |
GUID | c7be0679-2817-4d69-9d02-519a537ed0c6 |
PowerCfg Alias | Not applicable |
Possible Values |
IndexNameDescription
0Ideal As many logical processors as are required to reduce the processor utilization below the value of the Processor Performance Core Parking Increase Threshold setting are transitioned from the parked state to the unparked state.
1SingleA single logical processor is transitioned from the parked state to the unparked state. On the next evaluation of the Core Parking algorithm, if the processor utilization is still greater than the value of the Processor Performance Core Parking Increase Threshold setting, another single logical processor is transitioned from the parked state to the unparked state.
2All (Rocket)All logical processors that are in the parked state are transitioned to the unparked state. Note that the value of the Processor Performance Core Parking Maximum Cores setting can limit the number of logical processors that can be in the unparked state at the same time.
|
Hidden | Yes |
Processor Performance Core Parking Decrease Policy
Description | Specifies the number of logical processors to transition from the unparked state to the parked state when the processor utilization across all unparked logical processors in the system is below the value of the Processor Performance Core Parking Decrease Threshold setting. |
GUID | 71021b41-c749-4d21-be74-a00f335d582b |
PowerCfg Alias | Not applicable |
Possible Values |
IndexNameDescription
0Ideal As many logical processors as are required to increase the processor utilization above the value of the Processor Performance Core Parking Decrease Threshold setting are transitioned from the unparked state to the parked state.
1SingleA single processor is transitioned from the unparked state to the parked state. On the next evaluation of the Core Parking algorithm, if the processor utilization is still less than the value of the Processor Performance Core Parking Decrease Threshold setting, another single processor is transitioned from the unparked state to the parked state.
2All (Rocket)All processor cores that are in the unparked state that can be parked are transitioned to the parked state. Note that at least one logical processor per node always remains in the unparked state. Note that the value of the Processor Performance Core Parking Minimum Cores setting can increase the number of logical processors that always remain in the unparked state.
|
Hidden | Yes |
Processor Performance Core Parking Max Cores
Description | The maximum percentage of logical processors (in terms of all logical processors that are enabled on the system) that can be in the unparked state at any given time. For example, on a system with 16 logical processors, configuring the value of this setting to 50% ensures that no more than 8 logical processors are ever in the unparked state at the same time. The Core Parking algorithm is disabled if the value of this setting is not greater than the value of the Processor Performance Core Parking Minimum Cores setting. |
GUID | ea062031-0e34-4ff1-9b6d-eb1059334028 |
PowerCfg Alias | Not applicable |
Minimum Value | 0 |
Maximum Value | 100 |
Label | Percentage (%) |
Hidden | Yes |
Processor Performance Core Parking Min Cores
Description | The minimum percentage of logical processors (in terms of all logical processors that are enabled on the system) that can be placed in the unparked state at any given time. For example, on a system with 16 logical processors, configuring the value of this setting to 25% ensures that at least 4 logical processors are always in the unparked state. The Core Parking algorithm is disabled if the value of this setting is not less than the value of the Processor Performance Core Parking Maximum Cores setting. |
GUID | 0cc5b647-c1df-4637-891a-dec35c318583 |
PowerCfg Alias | Not applicable |
Minimum Value | 0 |
Maximum Value | 100 |
Label | Percentage (%) |
Hidden | Yes |
Processor Performance Core Parking Increase Time
Description | Specifies the minimum amount of time that must elapse before additional logical processors can be transitioned from the parked state to the unparked state. The time is specified in units of the number of Processor Performance Time Check Intervals. |
GUID | 2ddd5a84-5a71-437e-912a-db0b8c788732 |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 100 |
Label | Time Check Intervals |
Hidden | Yes |
Processor Performance Core Parking Decrease Time
Description | Specifies the minimum amount of time that must elapse before additional logical processors can be transitioned from the unparked state to the parked state. The time is specified in units of the number of Processor Performance Time Check Intervals. |
GUID | dfd10d17-d5eb-45dd-877a-9a34ddd15c82 |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 100 |
Label | Time Check Intervals |
Hidden | Yes |
The Windows kernel scheduler notifies the Core Parking algorithm when affinitized threads are run on logical processors that are currently in the parked state. This helps the Core Parking algorithm select the logical processors that have recently been scheduled affinitized work to transition from the parked state to the unparked state. The following policy settings configure the Core Parking algorithm for maintaining and tracking instances of affinitized work that have been scheduled to parked logical processors.
Processor Performance Core Parking Affinity History Decrease Factor
Description | Specifies the factor by which to decrease the affinity history for each logical processor. The rate is specified in units of the number of Processor Performance Time Check Intervals. |
GUID | 8f7b45e3-c393-480a-878c-f67ac3d07082 |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 10 |
Label | None (discrete units) |
Hidden | Yes |
Processor Performance Core Parking Affinity History Threshold
Description | Specifies the affinity history value above which a logical processor is considered to have recently been scheduled significant affinitized work. |
GUID | 5b33697b-e89d-4d38-aa46-9e7dfb7cd2f9 |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 1000 |
Label | None (discrete units) |
Hidden | Yes |
Processor Performance Core Parking Affinity Weighting
Description | Specifies the weighting that is given to each occurrence of affinitized work that is scheduled to a logical processor. |
GUID | e70867f1-fa2f-4f4e-aea1-4d8a0ba23b20 |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 1000 |
Label | None (discrete units) |
Hidden | Yes |
The Core Parking algorithm tracks logical processors that are overutilized. An overutilized logical processor is a logical processor that is in the parked state that had processor utilization during the last processor performance time check interval that is greater than the value of the Processor Performance Core Parking Overutilization Threshold setting. This helps the Core Parking algorithm select the particular parked logical processors that have recently been scheduled significant amounts of work to transition to the unparked state.
Processor Performance Core Parking Overutilization History Decrease Factor
Description | Specifies the factor by which to decrease the overutilization history for each logical processor. The rate is specified in units of the number of Processor Performance Time Check Intervals. |
GUID | 1299023c-bc28-4f0a-81ec-d3295a8d815d |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 10 |
Label | None (discrete units) |
Hidden | Yes |
Processor Performance Core Parking Overutilization History Threshold
Description | Specifies the overutilization history value above which a logical processor is considered to have recently been overutilized. |
GUID | 9ac18e92-aa3c-4e27-b307-01ae37307129 |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 1000 |
Label | None (discrete units) |
Hidden | Yes |
Processor Performance Core Parking Overutilization Weighting
Description | Specifies the weighting that is given to each occurrence where a logical processor that is in the parked state is determined to be overutilized. |
GUID | 8809c2d8-b155-42d4-bcda-0d345651b1db |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 1000 |
Label | None (discrete units) |
Hidden | Yes |
Processor Performance Core Parking Core Override
Description | Specifies that at least one logical processor per processor core must always remain in the unparked state regardless of the values of the Processor Performance Core Parking Maximum Cores and Processor Performance Core Parking Minimum Cores settings. |
GUID | a55612aa-f624-42c6-a443-7397d064c04f |
PowerCfg Alias | Not applicable |
Possible Values |
IndexNameDescription
0DisabledAllow all logical processors in a processor core to be parked.
1EnabledRequire at least one logical processor per processor core to remain unparked.
|
Hidden | Yes |
Processor Performance Core Parking Parked Performance State
Description | Specifies the performance state (P-state) for a logical processor that is transitioned from the unparked state to the parked state. |
GUID | 447235c7-6a8d-4cc0-8e24-9eaf70b96e2b |
PowerCfg Alias | Not applicable |
Possible Values |
IndexNameDescription
0No PreferenceThe current performance state for the logical processor is maintained.
1Lowest Performance StateThe logical processor will be put into the lowest supported (Pmax) performance state.
2Highest Performance StateThe logical processor will be put into the highest supported (P0) performance state.
|
Hidden | Yes |
Note that if a logical processor is a member of a processor performance state domain that includes other logical processors, the actual performance state of the logical processor is set to the highest performance state of all logical processors in the processor performance state domain.
Processor idle policy settings
These policy settings configure the processor idle state (C-state) algorithm. These policy settings should not be changed without consultation from the system processor and chipset vendor.
Processor Idle Time Check
Description | Specifies the duration, in microseconds, between subsequent evaluations of the processor idle state algorithm. |
GUID | c4581c31-89ab-4597-8e2b-9c9cab440e6b |
PowerCfg Alias | Not applicable |
Minimum Value | 1 |
Maximum Value | 200000 |
Label | Microseconds (us) |
Hidden | Yes |
Processor Idle Demote Threshold
Description | The amount of processor idleness that is required before a processor is set to the next higher power processor idle state. When the processor idleness goes below the value of this setting, the processor transitions to the next lower numbered C-state. |
GUID | 4b92d758-5a24-4851-a470-815d78aee119 |
PowerCfg Alias | Not applicable |
Minimum Value | 0 |
Maximum Value | 100 |
Label | Percentage (%) |
Hidden | Yes |
Processor Idle Promote Threshold
Description | The amount of processor idleness that is required before a processor is set to the next lower power processor idle state. When the processor idleness goes above the value of this setting, the processor transitions to the next higher numbered C-state. |
GUID | 7b224883-b3cc-4d79-819f-8374152cbe7c |
PowerCfg Alias | Not applicable |
Minimum Value | 0 |
Maximum Value | 100 |
Label | Percentage (%) |
Hidden | Yes |
Processor Idle Disable
Description | Specifies if processor idle states are disabled on the system. Note that disabling the processor idle states on a system has severe negative energy efficiency and thermal consequences and should be done only in consultation with the system or processor vendor. |
GUID | 5d76a2ca-e8c0-402f-a133-2158492d58ad |
PowerCfg Alias | Not applicable |
Possible Values |
IndexNameDescription
0EnabledProcessor idle states are enabled.
1DisabledProcessor idle states are disabled.
|
Hidden | Yes |
Processor Idle Threshold Scaling
Description | Specifies if the processor idleness is scaled to the current processor performance state when calculating a target processor idle state. |
GUID | 6c2993b0-8f48-481f-bcc6-00dd2742aa06 |
PowerCfg Alias | Not applicable |
Possible Values |
IndexNameDescription
0DisabledIdle threshold scaling is disabled.
1EnabledIdle threshold scaling is enabled.
|
Hidden | Yes |
System cooling policy setting
This policy setting configures how Windows responds to high thermal conditions on systems that support active cooling features, such as fans.
System Cooling Policy
Description | Configures Windows thermal behavior on systems that support active cooling features. |
GUID | 94d3a615-a899-4ac5-ae2b-e4d8f634367f |
PowerCfg Alias | Not applicable |
Possible Values |
IndexNameDescription
0PassiveThe system reduces the processor performance before it enables active cooling features such as fans.
1ActiveThe system enables active cooling features such as fans before it reduces the processor performance.
|
Hidden | Yes |
Related topics
Processor Power Management in Windows 7 and Windows Server 2008 R2