# Set Core Parking Max



## FordGT90Concept (Nov 10, 2013)

I threw this program together quickly which modifies the Group Policy for core parking.  Core parking is a power saving feature in Windows 7 and newer which moves threads off a near-idle logical core (e.g. Hyper-Threading) so that the processor can transition the logical core into standby thus saving power; however, this feature can have some unwanted side effects like micro-stutter in games.  Set Core Parking Max modifies the minimum percentage of cores that can be parked.







If you want to disable core parking, set it to 100%.  If you want to enable it, set it to any value less than 100%.  10% is the default value.

Application requires .NET Framework 4.0.  It should work on 32-bit and 64-bit versions of Windows.


Uses VolatileReader.Registry by Brandon Perry ©2013.


----------



## Mussels (Nov 10, 2013)

what hardware is this compatible with?


----------



## AsRock (Nov 10, 2013)

I disable my core parking with a app some one made with arma 3, but looks like you taken it a little further..

http://steamcommunity.com/sharedfiles/filedetails/?id=180980594#-1


----------



## brandonwh64 (Nov 10, 2013)

I get this on windows 8.1


----------



## FordGT90Concept (Nov 10, 2013)

Mussels said:


> what hardware is this compatible with?


As far as I know, all multi-core CPUs running Windows 7 and earlier.  I suspect Vista too but I can't test.  Put simply, if you try to run it on an operating system that doesn't support it, it will pop up an error message on starting it and terminate.  No harm in trying.




AsRock said:


> I disable my core parking with a app some one made with arma 3, but looks like you taken it a little further..
> 
> http://steamcommunity.com/sharedfiles/filedetails/?id=180980594#-1


BumbleBee linked me to something similar, I looked at the application and quickly came up with five problems with it.  After pestering her for hours to tell her to tell me to make it, I made it in a few hours. 


Spoiler: Raisins!



a) it modifies values it definitely should not (ControlSet001, ControlSet002, and CurrentControlSet in most cases; only CurrentControlSet should be modified which modifies 001 OR 002, not both because one of those is a back up that should not be tampered with)
b) it's slow as hell (it searches the registry for a key when the key's location is absolute)
c) it should have an option for 0-100, not just 0 or 100 (slider for the win!)
d) no restart comp button (I even put the reason for restart in there... Operating System: Reconfiguration (planned))
e) the download is MASSIVE for no fucking reason (my program was 12.5 KiB before I added the icon, 72 KiB with compared to over a megabyte)






brandonwh64 said:


> I get this on windows 8.1
> 
> http://img.techpowerup.org/131110/Capture005.jpg


Which means the policy doesn't exist on Windows 8.1, good to know.  It may only exist on Windows 7.


----------



## Frick (Nov 10, 2013)

brandonwh64 said:


> I get this on windows 8.1
> 
> http://img.techpowerup.org/131110/Capture005.jpg



I get it on Windows 7. And yes .net 4 is installed.

EDIT: Windows 7 Pro, fully updated. Swedish version.


----------



## FordGT90Concept (Nov 10, 2013)

Frick said:


> I get it on Windows 7. And yes .net 4 is installed.


So we have ourselves a bug then...

Can you two verify this key exists on their computer?
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583

If it does not, can you find 0cc5b647-c1df-4637-891a-dec35c318583 inside of PowerSettings?


----------



## LAN_deRf_HA (Nov 10, 2013)

Take a look at this one. Seems to let you set it differently depending on power plan. http://bitsum.com/about_cpu_core_parking.php


----------



## brandonwh64 (Nov 10, 2013)

LAN_deRf_HA said:


> Take a look at this one. Seems to let you set it differently depending on power plan. http://bitsum.com/about_cpu_core_parking.php



This program worked on windows 8.1 and also enabled it to be shown under advanced power settings.


----------



## FordGT90Concept (Nov 10, 2013)

LAN_deRf_HA said:


> Take a look at this one. Seems to let you set it differently depending on power plan. http://bitsum.com/about_cpu_core_parking.php


There's a good program.  Hmm, to fix mine or not to fix mine...




brandonwh64 said:


> This program worked on windows 8.1 and also enabled it to be shown under advanced power settings.


I can add a checkbox to my program that does the same.


----------



## 95Viper (Nov 10, 2013)

Yep, I use Bitsum's; however, I say go for it, Ford.
There is always room for more out there.


----------



## Mussels (Nov 10, 2013)

has anyone done tests to determine how much this actually changes idle power consumption?


edit: testing it myself, because i'm awesome


default setting, 6 cores idle at desktop: 158-162W


changed to maximum 3 parked cores:

157W, no change really. program recognised changed setting on reboot.


----------



## FordGT90Concept (Nov 10, 2013)

I'm going to have to think this through because the profiles add a degree of complexity.  I do see room for improvement on Bitsum's application though, especially where it loses settings after they have been applied and switched to another profile.  I know, for sure, I'm not going to try to visualize the core load.

I'm going to remove the program from the OP for the time being...


----------



## LAN_deRf_HA (Nov 10, 2013)

Mussels said:


> has anyone done tests to determine how much this actually changes idle power consumption?
> 
> 
> edit: testing it myself, because i'm awesome
> ...



I did awhile ago just looking in aida and saw no difference. I thought MS had pretty much abandoned this setting since a lot of people with 8 were reporting it wasn't on by default.


----------



## Mussels (Nov 10, 2013)

i did an update to the post. seems like no change to at the wall power consumption. does this mean its even working? or is this only going to have an effect on 'near idle' conditions?


----------



## LAN_deRf_HA (Nov 10, 2013)

Mussels said:


> i did an update to the post. seems like no change to at the wall power consumption. does this mean its even working? or is this only going to have an effect on 'near idle' conditions?



It's possible it saves power on marginal loads which might be hard to read since they jump around a lot, but if it was really some great power saver you'd think MS would try harder to fix it up. I think turning it off is one of the things that AMD patch does.


----------



## Frick (Nov 10, 2013)

FordGT90Concept said:


> So we have ourselves a bug then...
> 
> Can you two verify this key exists on their computer?
> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583



Have it.


----------



## FordGT90Concept (Nov 10, 2013)

If the processor is fully loaded, none of the cores should be parked even if parking is enabled.  Cores only get parked when there's enough processing power to move threads to another core and thereby shut a core down to save power (park it).  So to see parking work, you have to load less than 100% of the cores and maybe the last one will park, for example.




Frick said:


> Have it.


Hmm, strange.  I'll have to look into that when I do the rewrite.


----------



## FordGT90Concept (Nov 10, 2013)

I'm beginning to think my approach is all wrong.  Maybe instead of modifying values directly, perhaps I should just unlock options in Power Options -> Advanced settings?  But how far do I go with it?  There are literally 38 options, only one is shown by default.  At least three of them are related to parking.

To enable these, one doesn't even need a program.  Just running a .reg would suffice.  I've kind of lost purpose/direction for this program.


----------



## Mussels (Nov 10, 2013)

program is good. maybe put 'common settings' on one page, and have an advanced page for everything else?


----------



## FordGT90Concept (Nov 10, 2013)

Here's all the settings relating to parking:

```
0cc5b647-c1df-4637-891a-dec35c318583	Processor performance core parking min cores
1299023c-bc28-4f0a-81ec-d3295a8d815d	Processor performance core parking over utilization history decrease factor
2ddd5a84-5a71-437e-912a-db0b8c788732	Processor performance core parking increase time
447235c7-6a8d-4cc0-8e24-9eaf70b96e2b	Processor performance core parking parked performance state
5b33697b-e89d-4d38-aa46-9e7dfb7cd2f9	Processor performance core parking affinity history threshold
68dd2f27-a4ce-4e11-8487-3794e4135dfa	Processor performance core parking decrease threshold
71021b41-c749-4d21-be74-a00f335d582b	Processor performance core parking decrease policy
8809c2d8-b155-42d4-bcda-0d345651b1db	Processor performance core parking over utilization weighting
8f7b45e3-c393-480a-878c-f67ac3d07082	Processor performance core parking affinity history decrease factor
943c8cb6-6f93-4227-ad87-e9a3feec08d1	Processor performance core parking over utilization threshold
9ac18e92-aa3c-4e27-b307-01ae37307129	Processor performance core parking over utilization history threshold
a55612aa-f624-42c6-a443-7397d064c04f	Processor performance core parking core override
c7be0679-2817-4d69-9d02-519a537ed0c6	Processor performance core parking increase policy
df142941-20f3-4edf-9a4a-9c83d3d717d1	Processor performance core parking increase threshold
dfd10d17-d5eb-45dd-877a-9a34ddd15c82	Processor performance core parking decrease time
e70867f1-fa2f-4f4e-aea1-4d8a0ba23b20	Processor performance core parking affinity weighting
ea062031-0e34-4ff1-9b6d-eb1059334028	Processor performance core parking max cores
```
Bitsum only enables 0cc5b647-c1df-4637-891a-dec35c318583 (default: 10%) and ea062031-0e34-4ff1-9b6d-eb1059334028 (default: 100%).  I see now that my approach is all wrong.  *I recommend everyone that successfully ran my program put it back to 100 and leave it there (restart to apply if you need it now).*

I think my preference would be that people modify core parking via Power Options but... the question is how many of those above options should be enabled?


Edit: I set it to 0% min cores and 0% max cores with BOINC running and Windows parked 4 (50%) of my cores.  All 8 instances of BOINC were forced to those 4 active cores.  I put it back to 10% min and 100% max (which is default) and Windows utilized all 8 cores, BOINC placing an instance on each.

Parking can only disable logical CPUs so that would mean Intel processors with Hyper-Threading or AMD Bulldozer chips.

Setting min cores to 100% seems to disable it.


Edit: I think I know what I'm going to do to fix this...


----------



## Mussels (Nov 10, 2013)

oh well thats why it did nothing for me, i'm all physical cores here.


see my system name in specs for old joke relevant to this situation.


----------



## LAN_deRf_HA (Nov 10, 2013)

Specifically I didn't see any power savings with core parking at idle, with 4 cores and 4 threads. AIDA might just not be able to pick up on it.


----------



## FordGT90Concept (Nov 10, 2013)

I've ran into a potential problem and it is going to take a long time to fix.  It doesn't seem like the actual current settings are stored anywhere readily accessible but I can coerce the settings out of powercfg using the -export command.  The problem is, that exported file is a REGF so I have to write code to parse that and get the important information out of it.

This is something the other applications don't do so I think it makes it a worthy project to complete.


Edit: Can someone that has non-English Vista or newer installed run this in CMD: powercfg -q scheme_current sub_processor

I need to know if it always returns English titles or not.


----------



## FordGT90Concept (Nov 10, 2013)

Luckily, someone else write a REGF reader and it worked for my needs so I was able to accomplish what I wanted to rather quickly.  It's really very simple now so there isn't much to say.  Try it and let me know how it goes.


FYI, it should automatically patch the value that the old version modified back to 100.  It should also fix brandonwh64's and frick's issue with directly accessing the registry because it does everything via powercfg.


Edit: I'm thinking about making enabling/disabling options a separate program.  I really want this one to KISS.


----------



## AsRock (Nov 10, 2013)

Well had no issue's using the other one and 0 is what i want lol.


Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\account b>powercfg -q scheme_current sub_processor
Power Scheme GUID: bcb8bf4e-1131-47eb-920e-ab4eed020241  (ASRock eXtreme Tuner U
tility)
  Subgroup GUID: 54533251-82be-4824-96c1-47b60b740d00  (Processor power manageme
nt)
    Power Setting GUID: 893dee8e-2bef-41e0-89c6-b55d0929964c  (Minimum processor
 state)
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0x00000064
      Possible Settings increment: 0x00000001
      Possible Settings units: %
    Current AC Power Setting Index: 0x00000064
    Current DC Power Setting Index: 0x00000005

    Power Setting GUID: 94d3a615-a899-4ac5-ae2b-e4d8f634367f  (System cooling po
licy)
      Possible Setting Index: 000
      Possible Setting Friendly Name: Passive
      Possible Setting Index: 001
      Possible Setting Friendly Name: Active
    Current AC Power Setting Index: 0x00000001
    Current DC Power Setting Index: 0x00000001

    Power Setting GUID: bc5038f7-23e0-4960-96da-33abaf5935ec  (Maximum processor
 state)
      Minimum Possible Setting: 0x00000000
      Maximum Possible Setting: 0x00000064
      Possible Settings increment: 0x00000001
      Possible Settings units: %
    Current AC Power Setting Index: 0x00000064
    Current DC Power Setting Index: 0x00000064




Mussels said:


> has anyone done tests to determine how much this actually changes idle power consumption?
> 
> 
> edit: testing it myself, because i'm awesome
> ...



Still get the same idle states if parked or not.


----------



## FordGT90Concept (Nov 10, 2013)

I don't need that powercfg info anymore because the REGF route worked.  That should always work regardless of language.  Still, interesting you have a custom name on the power profile you are using.  I wasn't aware you could even add/remove/rename them without hacks.

The old version you did want 0.  Min level and max level was 0 yet default was 10.  It was out of range so it erred, disabling parking.  This new method leves max at 100 and instead, changes the actual value from what would be 10 to 100.  Min and max equal but without erring.  The registry is unedited--the power config (not sure where it is actually saved) is modified.


----------



## AsRock (Nov 10, 2013)

FordGT90Concept said:


> I don't need that powercfg info anymore because the REGF route worked.  That should always work regardless of language.
> 
> Still, interesting you have a custom name on the power profile you are using.  I wasn't aware you could even add/remove/rename them without hacks.



Yeah, the ASRock software changes it.







The naming ?  you on about changing ?..

Local Machine \ SYSTEM \ ControlSet001 \ Control \ Power \ User \ PowerSchemes \ bcb8bf4e-1131-47eb-920e-ab4eed020241 ( in this case few other default ones there too ) 

Then there is 3 keys


----------



## FordGT90Concept (Nov 10, 2013)

Ah! That's where it is!  I've been looking for it and looking for it and coming up empty.  The program, as it stands, only modifies to current power scheme.  I doubt there is demand for manipulating many but if there is, I now know how to do it.


----------



## TheHunter (Nov 10, 2013)

why not just bound it to certain power plan? Like this little app.
http://bitsum.com/about_cpu_core_parking.php


Btw its already off in Win8 and Win8.1 @ high performance power plan.


----------

