So, Windows added a little feature a while back to help save power. Unfortunately, it can have serious side effects for gaming and other high-performance computing.
Windows 7 / Server 2008 machines running on multi-core CPU’s have an obscure feature enabled by default called CPU core parking. While usually benign – some people have experienced serious issues that seem completely unrelated to this feature. The symptoms are a decrease in performance with unstable and jittery in-game FPS, or noticeably laggy/jittery and unresponsive game play. All this despite a high-end graphics card and CPU that should be more than capable of running the game. People have often seen this problem or described it as micro-stuttering – random fractional frame pauses that are hard to pin down precisely but are definitely noticeable and detrimental to game play.
Core parking comes in at this point. Modern multi-threaded games often can leave a core idle for micro-portions of the frame after it has completed it’s processing and other cores are still finishing their work up. Windows sees this idling, and decides to put the idle core in low-power mode. Normally, threads go idle for long periods of time (often hundreds to thousands of milliseconds), so putting them to sleep is fine and can save power. But in a game, the core goes idle only to be woken up only microseconds later for the next frame. Unfortunately, parking and unparking has a time cost associated with the operation of a couple of micro/milliseconds – which when rendering 60+fps – actually creates noticeable tiny ‘hitches’. It often appears randomly because it requires just the right set of conditions to cause the parking/wakeup to be visible.
So, what to do? You can actually disable this ‘feature’ – which on a gaming rig – is probably the right action since it’s unlikely that power saving is your highest concern. How do you do it? Just like this:
- Open Regedit
- Find this key: ” 0cc5b647-c1df-4637-891a-dec35c318583 “
- Within this key, there is a value called: ” ValueMax ” This value represents the % number of cores the system will park – the default is 64(hex) or 100% ie: all Cores are potentially park-able.
- Change the value from 0x64 to 0 so the ” ValueMin ” and ” ValueMax ” are both zero
- You will have to find the key a few times and repeat the process for each time it is found – the number of instances will depend on the number of power profiles in your system [ for me, it was only found twice ]D
- Do a full shutdown, power-off, and cold-re-start