Why does Windows 10 have CPU core parking disabled?
When and Why Did Windows 10 Disable Core Parking?
Microsoft disabled core parking in default windows 10 power plans in 2017.
One website states:
“If you disable core parking on your CPUs, your computer may have faster benchmarks. (Reported higher frame rates by gamers and power users).”
While Microsoft has chosen to give more power to performance of hardware, it has left the option of custom power plans up to vendors, server administrations and super users.
“Core Parking is most effective on systems that have processor idle states with extremely low power consumption.” (source)
Also Microsoft notes to server administrators:
When the core parking algorithm is picking cores to unpark (assuming an increase in workload intensity occurs), it may not always pick the cores within the active affinitized subset (or subsets) to unpark, and thus may end up unparking cores that won’t actually be utilized. (source)
While many users argue over the benefits of core-parking, Microsoft have chosen to leave the choice of core-parking up to vendors, as they can create there own power plans and shipping with products. With things like Turbo Boost Index and Frequency Scaling Index, a processor is usually able to be controlled more responsively with core parking disabled.
Here is a good example of a vendor, AMD, with there Razon product in 2017 creating custom powers for optimum use of there processor.
Core Parking Benchmark Example
And here is an example of benchmarking testing of power plans on a NUC, Windows 10 Pro, Intel Core i5-8259U that it used for mainly for office work: Pictures are of the processor rating, link is to full pc benchmark test of powerplan.
High performance power plan (Processor rating) Benchmark Link
High performance power plan, with 50% minimum core parking turned on Benchmark Link
Balanced power plan (Processor rating) Benchmark Link
Balanced power plan, with 50% minimum core parking turned on Benchmark Link
Does Windows 10 Come with Core Parking Disabled?
- Windows 10 uses power plans to set the Processor Performance which will result in cores being parked or not depending on configuration of power scheme settings.
Note the below information assumes static core parking options not heterogeneous architecture. Please see further reading links for more info.
Why is Core Parking Registry Setting Hidden?
- Microsoft use the command powercfg to control these settings. Please see answer here for a more information.
To unhide the said option open elevated cmd and run:
powercfg -attributes SUB_PROCESSOR CPMINCORES -ATTRIB_HIDE
Done. No need to edit the registry.
What is a Power Scheme?
A power scheme is a collection of settings that controls the power usage of your computer. You can use power schemes to reduce the power consumption of individual devices or the entire system.
Microsoft Static Configuration Options for Core Parking
You can use the static configuration options documented in this section to tune the behavior of the core parking engine.
CPMinCores specifies the minimum percentage of logical processors (in terms of all logical processors that are enabled on the system within each NUMA node) that can be placed in the un-parked state at any given time.
CPMaxCores specifies the maximum percentage of logical processors (in terms of logical processors within each NUMA node) that can be in the un-parked state at any given time.
CPIncreaseTime 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.
CPDecreaseTime 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.
CPConcurrency specifies the threshold for determining concurrency of the node.
CPDistribution specifies the utilization, in percentage, to use in the concurrency distribution to select the number of logical processors to distribute utility to.
CPHeadroom specifies the value of utilization that would cause the core parking engine to unpark an additional logical processor if the least utilized processor out of the unparked set of processors had more utilization. This enables increases in concurrency to be detected.
CPLatencyHintUnpark specifies the minimum number of unparked cores when a system low latency hint is detected.
Source: Microsoft - Static Core Parking Options
Power Profiles
You can use the Windows Provisioning framework to configure the processor power settings described in this section.
The processor namespace is divided into three sets of identical power processor configurations called power profiles. The power profiles are used by the power processor engine to adapt the performance and parking algorithm on various system use cases.
Windows 10 supports the following profiles:
- Default profile is the configuration set that is active most of the time.
- LowLatency is the profile that is activated during boot and during app launch time.
- LowPower is the profile that is activated during the buffering phase of media playback scenarios.
- Constrained is a profile activated by the battery saver feature on Windows 10 for desktop editions (Home, Pro, Enterprise, and Education).
All Processor Power Management Settings
Each profile supports the following configuration settings:
PowerCfg: CPMINCORES, CPMINCORES1
PowerCfg: CPMAXCORES, CPMAXCORES1
PowerCfg: LATENCYHINTUNPARK, LATENCYHINTUNPARK1
PowerCfg: PROCTHROTTLEMAX, PROCTHROTTLEMAX1
PowerCfg: PROCTHROTTLEMIN, PROCTHROTTLEMIN1
PowerCfg: PERFINCTHRESHOLD, PERFINCTHRESHOLD1
PowerCfg: PERFINCTIME, PERFINCTIME1
PowerCfg: PERFDECTHRESHOLD, PERFDECTHRESHOLD1
PowerCfg: PERFDECTIME, PERFDECTIME1
PowerCfg: LATENCYHINTPERF, LATENCYHINTPERF1
PowerCfg: PERFAUTONOMOUS
PowerCfg: PERFEPP
Microsoft: Source One and Source Two
Also see legacy commands PERFBOOSTMODE, PERFBOOSTPOL.
PowerCfg CommandLine and Windows 10 Power GUI
- Microsoft - PowerCfg Command Line Syntax
- Wikipedia - Powercfg
- Windows 10 Forum - How to Make all Power Options Visible In Windows 10 Power Settings GUI with Examples of Tweaking Via PowerCfg Command.
Retrieve the currently active power scheme, open elevated command prompt and type:
powercfg -getactivescheme
List GUID and names og power schemes (star shows selected scheme also):
powercfg /list
Query Plan
powercfg -query GUIDhere
Also to see aliases only and help (see here for more info)
powercfg.exe -aliases
powercfg -help
Example: Set CPU Cores to Minimum 50% on AC & CPU to 10% on Battery DC
powercfg /setACvalueindex scheme_current SUB_PROCESSOR CPMINCORES 50
powercfg /setDCvalueindex scheme_current SUB_PROCESSOR CPMINCORES 10
powercfg /setACvalueindex scheme_current SUB_PROCESSOR CPMINCORES1 50
powercfg /setDCvalueindex scheme_current SUB_PROCESSOR CPMINCORES1 10
Example of PowerCfg Hacking and Source Two
What is Core Parking and How Should You Adjust It?
Please see the above links and information for all available settings.
In brief, core parking allows your processors to go into a sleep mode. The main purposes of core parking is to allow the computer/laptop/device to only use the processors when required, thus saving on energy.
Microsoft, first in Windows Server 2008 R2, started using core parking via the processor power management (PPM) engine and the scheduler to set the numbers of cores dynamically depending on power plan settings and tasks scheduled to be carried out.
A minimum number of cores for the threads that will be scheduled as chosen by the PPM engine. Usually cores are parked that do not have any threads scheduled, and they go into a very low power states when they are not processing interrupts, DPCs, or other strictly affinitized work. Thus the remaining cores are responsible for the remainder of the workload. Core parking can potentially increase energy efficiency during lower usage, which is why it is generally set up on Windows power plans.
To turn off core parking, set the Processor Performance Core Parking Minimum Cores parameter to 100 percent by using the following commands:
Powercfg -setacvalueindex scheme_current sub_processor CPMINCORES 100
Powercfg -setactive scheme_current
To reduce the number of schedulable cores to 50 percent of the maximum count, set the Processor Performance Core Parking Maximum Cores parameter to 50 as follows:
Powercfg -setacvalueindex scheme_current sub_processor CPMAXCORES 50
Powercfg -setactive scheme_current
Example of a Processor's States
C0 - Active mode, processor executing code.
C1 - AutoHALT processor IA core state (Pacakage C0 state).
C1E - AutoHALT processor IA core state with lowest freqency and voltage operating point (Pacakage C0 state).
C2 - All processor IA cores in C3 or deeper. Memory path open. Temporary state before Package C3 or deeper.
C3 - Processor IA execution cores in C3 or deeper, flush their L1 instruction cache, L1 data cache, and L2 cache to the LLC shared cache. LLC may be flushed. Clocks are shut off to each core.
C6 - Processor IA execution cores in this state save their architectural state before removing core voltage. BCLK is off.
C7 - Processor IA execution cores in this state behave similarly to the C6 state. If all execution cores request C7, LLC ways may be flushed until it is cleared. If the entire LLC is flushed, voltage will be removed from the LLC.
C8 - C7 plus LLC should be flushed.
Lower Section Based On:
- Microsoft - Processor performance core parking maximum and minimum cores
- Microsoft - Power and performance tuning
- Core Parking Information on Quick CPU Page
- A Minimum Complete Tutorial of CPU Power Management, C-states and P-states
Free Programs:
- Quick CPU (my favourite)
- Disable CPU Core Parking Utility
- Bitsum - ParkControl – Tweak CPU Core Parking and More
- Intel Turbo Boost
Further Reading:
- Interesting Answer on Microsoft Forum - Core Parking Disabled
- A comparison of Windows 7 and Windows 8 Core Parking
- Overclock - Core Parking in Windows (Disable for more performance) 2017
- Windows 10 Gadgets - Core Parking
- Reddit - Windows 10 Stutter
- Reddit - Core Parking and AMD 2017
- Never, Ever Use a Software That Changing the Registry to Un-Park the Core
- New power options in Windows 10 for longer battery life on laptops
- Enable - Disable CPU Turbo Boost from Command Line
- Command Line Power Configuration for Microsoft Windows
- How to Add or Remove Maximum processor state from Power Options
- Notebook Review - Improving Battery Life - Enabling Deeper C States
- Core Parking in Windows (Disable for More Performance)
- Some CPU Cores Are Parked While Other Active 2008 R2
- CPU Parking Options in Power Settings
- Microsoft Press - Understanding the Windows I/O System
- Redit - Unparking Cores (Good or Bad?)
- What is Core Parking and Should You Adjust It?
- Windows 10 Doesn't Park CPU Cores?
- Enable or Disable CPU Core Parking in Windows 10/8/7
- Powercfg.exe and Parked CPU Core's
- How do I disable core parking in windows 10 build 10162
- Power and Performance Tuning Windows Sever 2016
- Document Number: 335190-003 7th Generation Intel® Processor Families for H Platforms
- Document Number: 335898-001 Intel® Core™ X-Series Processor Families
- Static Configuration Options for Heterogeneous Power Scheduling
- Wikipedia - Heterogeneous System Architecture