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
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:
Free Programs:
Further Reading: