Processor Affinity - Set for Applications

How to Set Processor Affinity to an Application in Windows 7


   Information
Processor affinity or CPU Pinning enables the binding and un-binding of a process or thread to a physical CPU or a range of CPUs, so that the process or thread in question will run only on the CPU or range of CPUs in question, rather than being able to run on any CPU

By default, Vista and Windows 7 runs an application on all available cores of the processor. If you have a multi-core processor, then this tutorial will show you how to set the processor affinity for an application to control which core(s) of the processor the application will run on.



If the application and CPU supports Symmetric Multiprocessing (SMP) or HyperThreading (HT), then Windows will automatically adjust the application's usage of each processor core for the best performance. You will not gain much, if anything, from manually changing the processor affinity for these type of applications.

If you have more then one processor intensive applications running, then you could improve their performance by setting the processor affinity of their processes to run on a different core(s). This way they are not competing for the resources of the same core(s).

   Note
It is NOT recommended to change the processor affinity for system processes. Doing so could reduce their performance or slow the system down.

The affinity changes you make to the current instance of an application or process are only temporary and not set permanently. Once you close the application or restart your system, the processor affinity of the application will automatically return back to the default of running on all available CPU cores.





OPTION ONE

To Set CPU Affinity of Process in Task Manager


1. Open the application that you want to change the processor affinity of, and do step 2 or 3 below.

2. If the Application Does Not "Run as administrator"
A) Right click on a empty space on the taskbar, click on Task Manager, and go to step 4 below.
NOTE: You can also press CTRL+SHIFT+ESC to open Task Manager.
3. If the Application Does "Run as administrator" (Elevated)
A) Click on the Processes tab in Task Manager, then click on the Show processes from all users button. (see screenshot below)
Step1.jpg
B) If prompted by UAC, then click on Yes (if administrator) or enter the administrator's password (if standard user).

C) Continue on to step 4.
4. In Task Manager, click on the Applications tab, right click on the application from step 1, and click on Go to Process. (see screenshot below)
[Step2.jpg
5. In the Processes tab, right click on the application's process, then click on Set Affinity. (see screenshot below)
NOTE: If Set Affinity is grayed out, then it means that the process cannot have the processor affinity set for.
Step3.jpg
6. Check (allow) or Uncheck (not allow) one or more CPU cores that you want to be allowed or not allowed to run the application on, then click on OK. (see screenshot below)
NOTE: Only the number of cores in your processor(s) will be available to set affinity to. CPU-0 = Core 1, CPU-1 = Core 2, etc...
Step4.jpg
7. Repeat for any other applications that you wish to change the processor affinity of.

8. When finished, close Task Manager.




OPTION TWO

To Run a Program with a Set CPU Affinity in Command Prompt


1. This step will show you how many CPU cores you have, and how to figure the hex value to use at step 3 below for the CPU(s) you want to run the application on.

NOTE: If you should need any assistance with this step, then please feel free to post. I'll be happy to help.

A) Open Task Manager (CTRL+Shift+ESC) in more details view, click on the Processes tab, right click on any process in the Image Name column, and click on Set affinity. (see screenshot below)

NOTE: This will show you how many CPU cores you have. I have 12 CPU cores numbered from 0 to 11.
Task_Manager_Affinity.jpg
B) For how many CPU cores you have will also be how long the binary number will be. Since I have 12 CPU cores, the binary number will be 12 zeros 000000000000. Each zero in the binary number represents a CPU core number from right to left. In my case with 12 CPU cores, the far right 0 in the binary number will be for CPU 0, and the far left 0 will be for CPU 11. (see screenshot below)

C) For each CPU number you want to run the application on, replace 0 (off) with 1 (on) in the binary number for the CPU numbers.

For example, if I wanted to run the application only on CPU 0, then my binary number would be changed to 000000000001. To run the application on CPU 0 and CPU 3, I would use 000000001001. (see screenshot below)
binary.jpg
D) Go the website below, and type your binary number from step 1C above into the Binary field. This will convert the binary number to a hexadecimal (hex) that you will need to use at step 3 below.
Website: Binary/Decimal/Hexadecimal Converter
For example, with my 000000000001 binary number, I get a hex value of 1. (see screenshot below)

Binary-Decimal-Hexadecimal-Converter.png
2. Open a command prompt.

3. In the command prompt, type the command below into the location area, and click on the Next button. (see screenshot below)

cmd.exe /c start "Program Name" /affinity # "Full path of application file"
For example: I would type this command below exactly if I wanted to create a shortcut to run Process Monitor on only CPU 0 (step 1), and it's .exe file is located at "E:\Programs\Process Monitor 3.05\Procmon.exe".

(For only on CPU 0)
cmd.exe /c start "Process Monitor" /affinity 1 "E:\Programs\Process Monitor 3.05\Procmon.exe"

(For on CPU 0 and CPU 3)
cmd.exe /c start "Process Monitor" /affinity 9 "E:\Programs\Process Monitor 3.05\Procmon.exe"

   Note
Substitute Program Name in the command with the actual program's name within quotes.

Substitute # in the command for the affinity # with the hex value (ex: 1) from step 1D above.

Substitute Full path of application file in the command with the full path of the file within quotes.






That's it,
Shawn




 
Last edited:
I don't have an option in my processor drop down menu to change the affinity setting. A fix to an issue I am having from other forums is to change this but there is nothing under set priorty. Any ideas??:confused:
 

My Computer

Computer Manufacturer/Model Number
Asus
OS
Windows 7
CPU
i7
Hello 601122, and welcome to Seven Forums.

Is the Set Priority menu empty for all of the listed proccesses, or just this one?

For now, you might see if running a sfc /scannow command may be able to help.
 

My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
Self built custom
OS
64-bit Windows 11 Pro for Workstations
CPU
Intel i7-8700K OC'd to 5 GHz
Motherboard
ASUS ROG Maximus XI Formula Z390
Memory
64 GB (4x16GB) G.SKILL TridentZ RGB DDR4 3600 MHz
Graphics Card(s)
ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
Sound Card
Integrated
Monitor(s) Displays
2 x Samsung Odyssey G7 27"
Screen Resolution
2560x1440
Hard Drives
1TB Samsung 990 PRO M.2,
4TB Samsung 990 PRO PRO M.2,
TerraMaster F8 SSD Plus NAS
PSU
Seasonic Prime Titanium 850W
Case
Thermaltake Core P3
Cooling
Corsair Hydro H115i
Keyboard
Logitech wireless K800
Mouse
Logitech MX Master 4
Internet Speed
2 Gb/s Download and 100 Mb/s Upload
Antivirus
Malwarebyte Anti-Malware Premium
Browser
Google Chrome
Other Info
Logitech Z625 speaker system,
Logitech BRIO 4K Pro webcam,
HP Color LaserJet Pro MFP M477fdn,
APC SMART-UPS RT 1000 XL - SURT1000XLI,
Galaxy S23 Plus phone
As you can see there is no option under the set priority to change the Affinity setting. My knowledge is very basic.

Thanks
 

Attachments

  • Screenshot.jpg
    Screenshot.jpg
    341.5 KB · Views: 1,532

My Computer

Computer Manufacturer/Model Number
Asus
OS
Windows 7
CPU
i7
601122,

I know this may seem silly, but did you move the mouse pointer over Set Priority to expand the arrow menu?
 

My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
Self built custom
OS
64-bit Windows 11 Pro for Workstations
CPU
Intel i7-8700K OC'd to 5 GHz
Motherboard
ASUS ROG Maximus XI Formula Z390
Memory
64 GB (4x16GB) G.SKILL TridentZ RGB DDR4 3600 MHz
Graphics Card(s)
ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
Sound Card
Integrated
Monitor(s) Displays
2 x Samsung Odyssey G7 27"
Screen Resolution
2560x1440
Hard Drives
1TB Samsung 990 PRO M.2,
4TB Samsung 990 PRO PRO M.2,
TerraMaster F8 SSD Plus NAS
PSU
Seasonic Prime Titanium 850W
Case
Thermaltake Core P3
Cooling
Corsair Hydro H115i
Keyboard
Logitech wireless K800
Mouse
Logitech MX Master 4
Internet Speed
2 Gb/s Download and 100 Mb/s Upload
Antivirus
Malwarebyte Anti-Malware Premium
Browser
Google Chrome
Other Info
Logitech Z625 speaker system,
Logitech BRIO 4K Pro webcam,
HP Color LaserJet Pro MFP M477fdn,
APC SMART-UPS RT 1000 XL - SURT1000XLI,
Galaxy S23 Plus phone
Hi thanks for assistance, yes it gives 6 options, real time, high, above normal, normal, below normal and low. Cheers.
 

My Computer

Computer Manufacturer/Model Number
Asus
OS
Windows 7
CPU
i7
That's great news. You're most welcome. :)
 

My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
Self built custom
OS
64-bit Windows 11 Pro for Workstations
CPU
Intel i7-8700K OC'd to 5 GHz
Motherboard
ASUS ROG Maximus XI Formula Z390
Memory
64 GB (4x16GB) G.SKILL TridentZ RGB DDR4 3600 MHz
Graphics Card(s)
ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
Sound Card
Integrated
Monitor(s) Displays
2 x Samsung Odyssey G7 27"
Screen Resolution
2560x1440
Hard Drives
1TB Samsung 990 PRO M.2,
4TB Samsung 990 PRO PRO M.2,
TerraMaster F8 SSD Plus NAS
PSU
Seasonic Prime Titanium 850W
Case
Thermaltake Core P3
Cooling
Corsair Hydro H115i
Keyboard
Logitech wireless K800
Mouse
Logitech MX Master 4
Internet Speed
2 Gb/s Download and 100 Mb/s Upload
Antivirus
Malwarebyte Anti-Malware Premium
Browser
Google Chrome
Other Info
Logitech Z625 speaker system,
Logitech BRIO 4K Pro webcam,
HP Color LaserJet Pro MFP M477fdn,
APC SMART-UPS RT 1000 XL - SURT1000XLI,
Galaxy S23 Plus phone
you can 'permanently' set a program's affinity by creating a .bat batch file in the same folder as the program, with the contents:

Code:
start /affinity 1 [I]program_name[/I].exe

this will force the software to use only cpu core 0. use ... /affinity 2 ... to specify cpu core 1 etc

you should then modify the program's start-menu and/or desktop shortcut to point to your newly created batchfile.

a tiny drawback is that you will see a small cmd window briefly flash on the screen before your program opens.

-------------------------------------------------------

for extra performance, you can add /high to give the application a higher cpu priority.

Code:
start /affinity 1 /high [I]program_name[/I].exe

(Brink, if you can rewrite this to make it clearer, then please do. :))
 

My Computer

Computer Manufacturer/Model Number
mickey megabyte 1234
OS
ultimate 64 sp1
CPU
i5 2500K [email protected]
Motherboard
MSI P67A-GD53
Memory
8 gigs GSkill Ripjaws 1600
Graphics Card(s)
amd hd6950
Sound Card
creative x-fi gamer
Monitor(s) Displays
samsung 24"
Screen Resolution
1920x1080
Hard Drives
ocz vertex 2e 60 gig, samsung f3 1tb, buffalo 2tb ext
PSU
antec 550
Case
antec three hundred
Cooling
i'm a cooling fan
Keyboard
saitek eclipse ii
Mouse
logitech g3
Internet Speed
about 4 Mbps
Other Info
i love win7
Back
Top