Win32PrioritySeparation – Understanding How the Values Impact Your Performance

Changing your Win32PrioritySeparation value in the registry has become a staple in the optimization process of your PC, but unfortunately, a lot of people editing their values rely on guesswork or internet myths.

Using this or that value just because someone in a Reddit thread mentioned it is rather counterproductive so I took a deeper dive on what exactly happens when you edit your Win32PrioritySeparation value.

The Basics

In very simple terms the moment you edit your Win32PrioritySeparation value you are effectively changing the way your processor is scheduling tasks on a very base level below all of the layers. This is important because different values can optimize your system for background tasks or real-time applications depending on your needs.

Since your processor can only spend a certain amount of time (quanta) processing tasks, using an incorrect value for your needs will lead to suboptimal performance.

The Values You Can Use

The values you can edit in your registry can be expressed both in Hexadecimals and in Decimals therefore it is important to define which type you are using so you avoid confusion further on.

win32priorityseparation values

Amit

Amit’s table is quite useful since it provides us with both the Hexadecimal/Decimal values and also provides us with the characteristics of each value: long/short interval, variable or fixed length, and whether the value boosts foreground applications or not.

Understanding Each Category

In essence, each value in the table above has 3 characteristics: interval, length, and foreground/background priority. These 3 categories will define if the value you are testing will give you better FPS, give you a better input, or try to balance the two.

Long vs Short

A short quantum for your value means the CPU allocates a short amount of time to applications. A long quantum gives applications the chance to hog the CPU for longer, implying there is less context switching.

Longer quantums are commonly used in server versions of Windows but can also lead to improved FPS performance in games and higher stability in audio applications. Shorter quantums should theoretically improve responsiveness since the data is refreshed faster and is more up-to-date for your foreground application (game).

Variable vs Fixed

A fixed quantum means that the time is divided equally between applications while a variable value will allow certain applications to hold the CPU for longer if needed. A variable quantum should then allow your game to run at better FPS (can gain more CPU time), while a fixed quantum should allow for better inputs since CPU time is distributed equally between your game and the processes that are responsible for your input devices.

Boosting Foreground Application or Not

The last category which is denoted with PsPrioSep 0/1/2 in Amit’s graph simply represents whether the CPU will prioritize the foreground application or not. There are 3 values here denoting the degree of prioritization: no foreground boost, medium foreground boost, and high foreground boost.

A no foreground boost value will distribute the time 1:1 between foreground and background processes, a medium boost will make the ratio 2:1 in favor of real-time applications (your game), and a high foreground boost value will make your CPU spend 3x more time on your foreground application compared to your background services.

To note: A foreground boost cannot be achieved while using a fixed length for the quantum but the value for PsPrioritySeparation does change meaning a 3:1 value should be different from a 1:1 fixed value.

Theory Crafting

With all of the information above sorted you can make certain theoretical conclusions based on the characteristics of each value.

For example: A value like 22 Decimal/16 Hex – Long, Variable, High foreground boost – has all of the characteristics to increase FPS performance in game since it aggressively focuses the game you play. This is denoted by the long (minimizing context switching which is taxing on the CPU), variable quantum (can hold CPU for longer on the application), with a high foreground boost (CPU spends 3:1 time on the game favoring it heavily).

A similar value of 38 Decimal /26 Hex (Short, Variable, High foreground boost) would be a compromise in favor of a short quantum meaning you would give up a minimal amount of stability of your FPS for a bit of responsiveness.

The values, particularly of interest to me, are 24 Decimal/18 Hex and 40 Decimal/ 28 Hex. The reason for this is that both values have a fixed quantum and no foreground boost which would mean that my CPU prioritizes 1:1 the time it spends on the game and background processes responsible for my inputs.

As explained by Amit in his thread, no foreground boost might be better for gamers who can afford the computational stress of spending a 1:1 quantum between your game and background processes like CSRSS which are responsible for your inputs.

win32priorityseparation valorant

Testing

With all of the theory crafting done, you are not left with actually testing the values you are interested in depending on what you want to prioritize when gaming. The testing methodology for me was quite simple:

  • Win+R and type regedit – navigate to Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl
  • win priority control
  • Edit the Win32PrioritySeparation value – make sure to consistently use Hex/Dec values because getting them confused will set your testing back
  • Open your game of choice – I used KovaaK’s aim trainer as a pretty stable environment
  • Open CapFrameX or any other utility that can capture FPS
  • Conduct a repeatable test while changing the values in the registry – you can just change the value in real-time since it applies instantly making it easy to test.
  • Take note of the FPS and how your input feels while testing
  • fps comparison
    fps comparison 2

Note: The results in the graphs above show the values in Decimals. The first graph shows the values I thought had potential and the second one is the graph showing the values I liked the most/had good FPS performance in the first round.

An important note to make here is that depending on how you use your PC a certain value might feel and produce worse/better results. A simple example is that if you go full input prioritization with something like 40 Decimal/26 Decimal depending on how many background applications/processes you have the value will produce different results.

If you only have the game open the 40/26 Decimal value will make your inputs feel quite snappy and produce decent FPS, while if you game with a bunch of browser tabs open and other applications too much of your CPU time will be spent on the background tasks leading to a worse input and FPS.

Conclusion

The values that seem good in theory might not match your actual PC usage and machine capabilities therefore the only reasonable way to find a value that suits your needs is to test the values you are interested in repeatedly.

It is important to define your goals (FPS or better inputs) and identify the optimal value for both FPS and input feeling for your specific use case – using some random value you found on the internet without understanding what it does is more than likely to cause degraded performance.

About The Author

Chris (vile_is_dead)

Custom Windows ISO enjoyer, FPS optimizer, and aim improvement enthusiast. Will disassemble all of his peripherals (and sometimes PC parts) to mod them even if all of them work perfectly fine. Discord/Twitter: vile_is_dead

Subscribe
Notify of
guest
3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Radio
Radio
5 months ago

What a timely upload. Been going back and forth on optimizations for cs2 all this month. Some changes made my task switching and 2nd monitor activity feel sluggish, so was forced to revert them to defaults. There are so few writeups on the various tweaks that aren’t just “create this key, edit this registry value, run this software” that it’s difficult to determine if the method works, who the change is intended for, and whether my hardware needs the tweak to begin with.

Mike
Mike
5 months ago

It seems the default hex value for Win 11 Home is 2.
What is MS trying to achieve with this? I suspect they’re bent on assuring responsiveness of inputs (for those working).
What is your take on this
Great article, by the way. Thank you.