Depending on the usage of your Windows 11/10/8/7 computer, you can configure processor scheduling, so that it gives you the best performance while using Programs or for Background Processes. You can make this adjustment easily via the Control Panel.
Windows automatically manages a number of foreground processes while a CPU is running. It has the built-in capability to manage the allocation of tasks. Windows do so by allotting a priority to tasks. Due to this reason, your computer is able to handle multiple processes on a single-core processor.
In order to optimize your copy of Windows to meet your requirements, you can adjust the Processor by scheduling the task allocation which it deals with. Using these features, you can set up Windows, so that it is optimized to run programs or foreground services OR Background Services, like printing or backing up, while you work in another program, by adjusting Processor Scheduling. This way, Windows then knows how to distribute or allocate the available resources, to best perform these tasks. If you’re using Windows as the server, we recommend you adjust processor scheduling for background processes.
Processor Scheduling in Windows 11/10
To begin the process, type sysdm.cpl in Run box and hit Enter to open the System Properties. Select the Advanced tab and under Performance, click on Settings. In the Performance Options box, select the Advanced tab again. You will see a section Processor Scheduling.
There are 2 settings you can choose from:
- Adjust for best performance of Programs
- Adjust for best performance of Background Services.
This setting changes the DWORD value of Win32PrioritySeparation under the following registry hive:
Just in case you wish to know, the PriorityControl key defines the foreground vs. background priority differential. The possible default values for Win32PrioritySeparation REG_DWORD 0, 1, or 2, with the default being 0x2.
Optimize Windows for best performance for programs or background services
This default value specifies the priority to give to the application running in the foreground. This application receives more processor time relative to other applications running in the background, explains TechNet. The values here correlate to the following options in the Tasking dialog box: Value Meaning
- 0 Foreground and background applications equally responsive
- 1 Foreground application more responsive than background
- 2 Best foreground application response time.
Coming back, if you have NOT changed this setting at all, and you were to open the Windows Registry, you would see Win32PrioritySeparation have a value 2. These screenshots are from my Windows PC.
Now, if via the Control Panel, as shown above, you select Adjust for best performance of Background Services and click Apply, you will find that its sets Win32PrioritySeparation to 18 (decimal 24) for Background Services.
If you now select Adjust for best performance of Programs, you will find that it sets Win32PrioritySeparation to 26 (decimal 38) for Programs.
Using this feature, you can set up Windows, so that it is optimized to run programs or foreground services OR Background Services, like printing or backing up, while you work in another program, simply by adjusting Processor Scheduling. This way, Windows then knows how to distribute or allocate the available resources, to best perform these tasks.
If you are using a desktop, you may leave the setting at its default or choose Adjust for best performance of Programs. Let us know if this results in smoother, faster response time for your programs or foreground services.
TIP: You can also change Process Priority for running processes using the Command line.
However, if you use your PC as a Server or if you constantly have background services, such as printing or disk backup that run while you work and you want them to respond faster, you can have Windows share processor resources equally between background and foreground programs by choosing the other option, ie. Adjust for best performance of Background Services.
So you see, Windows now gives you an easy way to set Processor Scheduling. If you are an advanced user and wish to set the values manually, you may use the follow the manual way in this post on how to get the best performance for programs or background services.