This article is designed to answer the old question if setting the program or game to another priority class changes the FPS or application overall performance or not.


What is the process priority setting for?

To answer the question if it really changes something we need to understand how the priority function in Windows works. By default, every program runs on ‘normal’ which means the OS (Windows) handles the system resources automatically. The priority only dictates how often the OS should try to run your process. But take a look in task manager when playing a game your game already takes 99% of the CPU time (if it was badly coded). So no matter how high priority you set, you’ll never be able to achieve more than a 1% speedup. And even if you manage that, you do it by starving other important processes that actually needed that 1% for a smooth running OS, Consequences might be that other background applications starting to stuttering, or just getting instability because important bits of Windows can’t be executed.

Windows is not a real-time OS!

Windows is not exactly a real-time operating system, the latency is quite low, older operating systems are ‘faster’ this is due several aspects but you only have to know that it’s all about how fast the application can operate while you use other things in the background. If you’re interested then this pdf is a really good start.

The process priority class raises or lowers all effective thread priorities in the process and is therefore considered the ‘base priority’.

So, every process has a:

Vista or newer Windows systems, use of the Multimedia Class Scheduler which is the proper way to achieve real-time operations in what is not a real-time OS. It works, for the most part, though is not perfect since the OS isn’t designed for real-time operations.

Is it a good idea to run games at higher priority setting than Normal?

There's absolutely no problem with a thread having a Real-time or High priority on a normal Windows 10 system - they aren't necessarily for special processes running on dedicated machines. I imagine that multimedia drivers and/or processes might need threads with a real-time priority, eg while streaming with OBS studio, however, such a thread should not require much CPU - it should be blocking most of the time in order for normal system events to get processing. The example shows that the application runs faster, but faster doesn't necessarily mean more FPS it can give you a slight boost especially on single-core systems when the system is busy with other tasks. On multi-core systems the benefit is way less and only bad coded applications need special adjustments.

Changing the priority permanently via regedit

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\\PerfOptions] "CpuPriorityClass"=dword:00000003 This changes the priority class forever, however, some application can override it. If you like to revert it, just delete the entire entry. Only apply the tweak in case you tested it before and don't do this blindly for every application or game! An alternative to this tweak is using Process Lasso (but overall it does provide the same) as shown here: [caption id="attachment_3083" align="alignnone" width="827"]game bitsum HP power plan option The Gaming Mode and it's Power Plan is nothing but a switch like Windows 'High performance' Plan and does the same, the difference here is that it automatically can switch the plan based on which .exe is started[/caption] [caption id="attachment_3084" align="aligncenter" width="564"]game mode list Similar to the registry tweak, you give Windows or Process Lasso the programs which should get a 'High'er priority[/caption]

Windows 10 Game Mode

In  nutshell spoken the Game Mode does nothing but the same, it tries to prioritize some processes eg your Game to get 'optimal' game experience but this is far away from being stable or usable as of right now because such a mode doesn't check if other applications are already running on High or Real-Time which then causes (again) some problems which can result in stuttering (micro-stuttering), frame drops and even freezes. Vulkan API based games like DOOM don't need any tweaks because there working quite different and you can check your task manager that there immediately get prioritized. In most cases you get a slight boost in D3D games but not in 'modern' ones which are built around Vulkan.

Is it dangerous to set something to real-time?

According to this article, yes. According to my own research, no! I wouldn't say that there are no risks because your application or OS entirely can freeze in several situations but it doesn't crash it, it's depending on several things like how many applications you have open, how many systems resources you have and how many cores or if you overclocked something or not. These variables apply to every user.

FPS vs. Latency

CHanging the priority might boost your FPS but you have to fight with latency, you might see that the mouse becomes 'laggy' this is when your PC runs out of resources and the last step before your Game/Application/OS starts to freeze.


Final Words

We learned today that setting “High” is okay but not always a guarantee and it depends on several variables, for single-core CPUs and optimized programs it definitely will get a performance boost will on overclocked machines or multi-core applications and CPUs it might can causes troubles. Especially in D3D9 (DirectX 9) in combination with Windows 10 own ‘Game mode’ it causes stuttering.

Don’t do it if you have enough system resources, it’s not worth the possible trouble especially if you have some background applications opened but do it when you only have one application open like one game or Photoshop, Sony Vegas or other photo/video editing programs.

In case you really have high end harder, never change it because your system would have enough resources and the OS then can finish it’s todo list (tasks) one by one. Windows 10 and modern hardware normally won’t take benefits from changing it, in most cases, the problem is the game or application which needs some changes, in this case, I would ask the developer directly to fix this or to use an up2date engine. Remember that the original old school engines like HL² were never designed to handle several cores at the same time, there are more such examples of course but it overall shows that this is a common engine problem.