Real-Time Control of CPU Core Parking and Frequency Scaling!
1. Core Parking is ‘green’. Performance is not.
For bursting loads — the most realistic real-world type of CPU load — people simply need their cores ready to execute, as Intel noted in the Skylake generation when it took back control from the OS, validating what Bitsum had been saying for years!
(p.s. Dynamic Boost helps you retain eco-friendliness when not using your PC)
2. Do not use direct registry edits if at all possible, especially a random one from some web site!
If you ignore this, at least use our RegMerge to see what it is doing. But better to use ParkControl or our guidance on this page.
3. ParkControl is free, but the Dynamic Boost (auto-switch of power plans on idle/active) requires ParkControl Pro. It also helps contribute to software like this!
Bitsum is an original innovator behind this tweak. Granted, it’s not rocket science, but sometimes the obvious needs stated. Further, we provide full technical details and information on how to make these tweaks without our software. Unlike others, we don’t hide our technology in a ‘black box’. Your purchase helps support our ongoing innovation, and we thank you!
NEW FEATURE: Bitsum Highest Performance. Create a power plan that auto-optimizes your hardware for max performance far beyond the system default ‘High Performance’ power plan.
NEWER FEATURE: Bitsum Dynamic Boost*. Auto-switch power plans when your PC goes active or idle. Stay running in Bitsum Highest Performance Mode while using your PC.
NEWEST FEATURE: Power Plan Change Notification – Shows you when your active power scheme changes and what process initiated the change.
*Only Available with a Pro License!
No, you do not *need* it. Process Lasso Pro is designed to take care of all this for you, dynamically. It’s pretty awesome, and has many other features. However, for tweakers, ParkControl Pro offers additional capabilities and automation over the more limited core parking settings of Process Lasso:
About Bitsum Dynamic Boost and Bitsum Highest Performance Plan
When you turn this ON it will instantly put you in ‘Bitsum Highest Performance’ power plan. This disables core parking and frequency scaling, and is something we manage and maintain for our users.
The flip-side of this feature is that when you go Idle for X time, it will go to ‘Power Saver’ (by default). So, visit the Settings of this option in the context menu of the system tray icon for ParkControl and be sure the ‘idle’ power plan it switches you to is what you want, and that power plan is configured like you want. For instance, Power Saver will let your PC sleep, so if you don’t want that, then turn off Dynamic Boost a minute, switch to Power Saver power plan, then go your settings and disable sleep (applying to the active power plan, Power Saver), then re-enable Dynamic Boost and go from there.
Benchmark results and images courtesy of XTremeHardware.
Core Parking is a sleep state, C6, supported by most modern processors and Operating Systems.
Core Parking dynamically disables CPU cores in an effort to conserve power when idle. Disabled cores are re-enabled as the CPU load increases once again. This technology is very similar to frequency scaling, in that it seeks to throttle the CPU when idle.
The problem is that Window’s default power profiles are configured far too aggressively when it comes to core parking, especially on workstations. Their interest was in conserving energy, even if this meant marginally decreasing performance. A number of complex parameters control when a core should be parked, and Microsoft tuned heavily towards power savings.
BTW, to deal with this issue, Intel changed Skylake to manage it’s own CPU core parking. Read more here…
The core parking settings in Windows are implemented as parameters of power plans (aka power profiles). That means you can, for example, disable core parking for the High Performance power plan, but leave it enabled for other plans. And that is exactly the desired tweak for most users: disable parking only for high performance power plans.
Empirical evidence shows that disabling core parking can make a real difference in system performance. There are many factors that will determine how efficacious it will be for any given system, including the CPU type, application load, and user behavior. However, we find that Windows is often over-aggressive in its core parking, resulting in excess latency as cores are unparked to accommodate bursting loads (the most common type of CPU load).
In our tests, we’ve found AMD processors benefit most from disabling core parking. This is perhaps due to the dramatic difference in the way AMD processors share (hardware) computational resources between logical cores. Microsoft optimized for Intel’s Hyper-Threading, which has much less capable secondary cores. AMD’s secondary logical cores are near full CPUs.
YMMV, but if we didn’t see real and substantial performance gains after disabling core parking, we wouldn’t have authored this utility.
These tweaks are entirely safe for any PC that is constructed properly. The only way that they could possibly seem to cause some change in behavior is if the PC has overheating issues. In such an event, those issues would be seen regardless of these tweaks by simply placing a sustained high load on the CPU.
Simply run ParkControl, select the target power profile, change the setting, and click apply!
What is that NUMBER that is shown on the GUI? That is the % of cores that must remain unparked. So, if it’s 25%, then 75% of the CPU’s cores can be parked at once (3 of 4).
Here at Bitsum, we won’t force you to use our software. We’ll tell you how to do it yourself, the right way, unlike many other web sites.
Getting to business, you can change these settings yourself via Window’s Powercfg.exe. You must run this utility with elevated rights, so be sure to open an elevated console window by right-clicking ‘cmd.exe’ and selecting ‘Run as Administrator’ (now in the ‘More’ submenu in the latest Windows 10 update).
Also note that these commands adjust the current power profile. I felt it simplest to use these variables as opposed to giving you GUIDs that may or may not apply to your PC’s power profile setup.
FIRST, Backup ALL your Power Settings by creating a dump of everything to a TXT file. You can later use this to revert to your default settings.
powercfg /qh > powerconfig.txt
To mandate 50% of available cores always remain unparked, run:
powercfg -setacvalueindex scheme_current sub_processor 0cc5b647-c1df-4637-891a-dec35c318583 50
To adjust it so that only 25% of available cores remain active at all times, allowing 75% of available cores to be parked, you’d run:
powercfg -setacvalueindex scheme_current sub_processor 0cc5b647-c1df-4637-891a-dec35c318583 25
Yes, you can use ‘0’ – Windows is not stupid enough to park all cores at once, it will always leave at least one core active. In fact, this is usually the default setting when it is enabled. For example, to enable maximum use of CPU Parking for the power profile you are currently using:
powercfg -setacvalueindex scheme_current sub_processor 0cc5b647-c1df-4637-891a-dec35c318583 0
To disable CPU Parking completely for the power profile you are currently using, you’d want to run:
powercfg -setacvalueindex scheme_current sub_processor 0cc5b647-c1df-4637-891a-dec35c318583 100
After changing the power scheme settings for CPU Parking as desired, you then want to make the changes active by running the command:
powercfg -setactive scheme_current
When I first wrote this I included allowing specification of AC or DC (battery) values for the power scheme. Setting the DC power value isn’t documented, so I am going to skip that. Still, to do so you’d simply replace ‘-setacvalueindex’ with ‘-setdcvalueindex’. It also is not entirely clear if this is supported for every power scheme, though it certainly appears to be. Sadly, Microsoft’s documentation is quite scarce.
You should not have to reboot for these changes to take effect. They are immediate! Go ahead and check the Resource Monitor and verify that CPU Parking is indeed as you set it.
I hope this helps some people. Why would you go around making manual edits to the registry when powercfg can do the job for you? You shouldn’t. Registry edits are prone to mistakes and are generally more tedious and less clear.
This gets tricky because not all settings apply to all models. There is, however, a general ON/OFF switch that DOES apply to all CPU models. Below we’ll present the most commonly used simple ON/OFF core parking switch, and how to show it in the Windows Advanced Power Options without any registry edits!
Hide Core Parking Settings without direct registry edits (real-time, no reboot required!):
powercfg -attributes SUB_PROCESSOR cc5b647-c1df-4637-891a-dec35c318583 -ATTRIB_HIDE
Re-hide Core Parking Settings without direct registry edits (real-time, no reboot required!):
powercfg -attributes SUB_PROCESSOR cc5b647-c1df-4637-891a-dec35c318583 +ATTRIB_HIDE
If your CPU model is Intel Core i3/i5/i7 6xxx or certain Xeons, then it is. Otherwise, it is not. Unless you bought your PC recently, it is not.
Due to the inefficiencies of OS managed core parking, Intel took over core parking in it’s latest generation of CPUs, nick-named Skylake. These thus have different core parking settings. The most important may simply be the ON/OFF switch of it’s Autonomous Mode, though there is also an aggressiveness %.
Autonomous Mode turns on/off the CPU’s ‘smart parking’, but does NOT turn off OS managed core parking. To do that, use ParkControl or the usual ways.
Unhide Skylake Core Parking Settings without direct registry edits (real-time, no reboot required!):
powercfg -attributes SUB_PROCESSOR 8baa4a8a-14c6-4451-8e8b-14bdbd197537 -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 36687f9e-e3a5-4dbf-b1dc-15eb381c6863 -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 4e4450b3-6179-4e91-b8f1-5bb9938f81a1 -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR cfeda3d0-7697-4566-a922-a9086cd49dfa -ATTRIB_HIDE
Re-hide Skylake Core Parking Settings without direct registry edits (real-time, no reboot required!):
powercfg -attributes SUB_PROCESSOR 8baa4a8a-14c6-4451-8e8b-14bdbd197537 +ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 36687f9e-e3a5-4dbf-b1dc-15eb381c6863 +ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 4e4450b3-6179-4e91-b8f1-5bb9938f81a1 +ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR cfeda3d0-7697-4566-a922-a9086cd49dfa +ATTRIB_HIDE
Importantly, Skylake adds an ‘Autonomous’ mode that you turn on or off to disable core parking. Within this is a percentage to adjust it’s aggressiveness.
8baa4a8a-14c6-4451-8e8b-14bdbd197537 – Processor performance autonomous mode (Enable/Disable) Specify whether processors should autonomously determine their target performance state.
36687f9e-e3a5-4dbf-b1dc-15eb381c6863 – Processor energy performance preference policy (Percent) Specify how much processors should favor energy savings over performance when operating in autonomous mode.
cfeda3d0-7697-4566-a922-a9086cd49dfa – Processor autonomous activity window (Microseconds) Specify the time period over which to observe processor utilization when operating in autonomous mode.
4e4450b3-6179-4e91-b8f1-5bb9938f81a1 – Processor duty cycling Specify whether the processor may use duty cycling.
Click here for AnandTech’s excellent article on Skylake.
Click here for all pertinent power GUIDs at this time (Skylake and legacy).
No reboots required! ParkControl makes it’s adjustments in real-time.
There are also a few other sub-GUIDs that we have yet to fully research. To unhide them in the Advanced Power Options of Windows, use (remember, these may do nothing on your CPU model!):
Show Unresearched Advanced Options
powercfg -attributes SUB_PROCESSOR 06cadf0e-64ed-448a-8927-ce7bf90eb35d -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 12a0ab44-fe28-4fa9-b3bd-4b64f44960a6 -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 40fbefc7-2e9d-4d25-a185-0cfd8574bac6 -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 4b92d758-5a24-4851-a470-815d78aee119 -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 7b224883-b3cc-4d79-819f-8374152cbe7c -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 943c8cb6-6f93-4227-ad87-e9a3feec08d1 -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 619b7505-003b-4e82-b7a6-4dd29c300971 -ATTRIB_HIDE
Hide Unresearched Advanced Options
powercfg -attributes SUB_PROCESSOR 06cadf0e-64ed-448a-8927-ce7bf90eb35d +ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 12a0ab44-fe28-4fa9-b3bd-4b64f44960a6 +ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 40fbefc7-2e9d-4d25-a185-0cfd8574bac6 +ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 4b92d758-5a24-4851-a470-815d78aee119 +ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 7b224883-b3cc-4d79-819f-8374152cbe7c +ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 943c8cb6-6f93-4227-ad87-e9a3feec08d1 +ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 619b7505-003b-4e82-b7a6-4dd29c300971 +ATTRIB_HIDE
You do not need it, but you may prefer it. It adds to Process Lasso a system tray icon that dynamically changes as core parking does. It also has some automation that is similar, but not quite the same, as Process Lasso’s IdleSaver. Note that if both applications are installed, the menu item to manage core parking in Process Lasso will open the ParkControl app. Importantly, it can run without Process Lasso, which is it’s primary audience. Process Lasso Pro is the ‘big boy toy’ of this class.
In summary, ParkControl offers:
1. When your PC goes Idle, Dynamic Boost switches to ‘Power Saver‘
2. So, if you do not want your PC to sleep, you need to change that setting for the Power Saver power plan.
3. To do this, open ‘Power Options‘, find ‘Power Saver‘, and edit it. You can also switch to it, then change the sleep settings in their separate config area in Windows.
CPU core parking and frequency scaling can have a dramatic impact on real-time performance of bursting loads like audio/video, gaming, VOIP, and more. That is a big reason we have made such a ‘fuss’ over them. It was nice to be ‘vindicated’ by Intel, who has moved core parking control to the hardware in new CPU generations because the OS’s management was so sub-optimal. As long as they retain the ability to disable core parking, and I’m sure they will, it should be a good change. Microsoft seemed to focus entirely on battery life in recent years, leaving performance to suffer, particularly for desktop users.
Yes, they can be run together just fine. They are designed to. Do you need ParkControl though? Well, you already have ‘Bitsum Highest Performance’ power plan, and it can be automated via ‘Gaming Mode’ and other mechanisms. You further have a non-system-tray ParkControl listed in the Tools menu of Process Lasso. The stand-alone distribution of ParkControl is for those who do not want to pay for, or use, a full-blown Process Lasso installation. The only other benefit to ParkControl is a system tray icon that dynamically changes when cores park, and perhaps easier access to quick core parking tweaks.
No, that’d be ridiculous. ParkControl makes these changes the correct way. The storage of the settings is backed in the registry, but why would you go hacking around in there when you can make these changes the right way and not risk damage? ParkControl’s changes to the system power plans are persistent, they don’t go away.
Are you a ‘Limited’ user? Is this PC on a corporate network? Have you done any ‘damage’ by doing manual registry edits? Are you sure your hardware supports core parking? In short, there are lots of variables. I recommend trying some of the powercfg.exe commands we list on this page in an administrative command console.
That means your CPU or BIOS/UEFI does not support CPU core parking, or it has otherwise been disabled. Now, do also remember that this setting is specific to each power plan, so don’t get those confused and think your changes weren’t saved.
First, if you never saw your CPU cores park, then it may be that your system just doesn’t support core parking. If you have seen your cores park in the past, but aren’t seeing parking activity, double check with the Task Manager or Resource Monitor (resmon.exe) to make sure it is not just a display error in the ParkControl GUI.
ParkControl changes settings of the Windows power plans based on your selections. These changes persist even if ParkControl is not running or uninstalled. For system defined power plans, you can reset to defaults in the Windows Power Options (linked to from the ParkControl GUI).
We’ve attempted to dig deeper into the core parking rabbit hole, and let me tell you there are countless additional hidden variables that control it’s behavior. It’s therefore not at all inconceivable that some are not tuned properly. In fact, Microsoft has issued Hotfixes in the past to address this very issue.
I’ll update my findings here as I’m able. If you want to support this project, buy a license for Process Lasso or donate.