CPU Affinity Shortcut for a Program - Create in Windows

How to Create a Shortcut to Run an Application with a Set CPU Affinity in Windows


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, Windows 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 of 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).


This tutorial will show you how to create a shortcut that will always run an application with a set CPU affinity by default in XP, Vista, Windows 7, and Windows 8.



Here's How:

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/tap on the Processes (XP, Vista, Windows 7) OR Details (Windows 8) tab, right click or press and hold on any process in the Name column, and click/tap 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-all.png


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. Right click or press and hold on an empty area of your desktop, and click/tap on New and Shortcut.

3. Type the command below into the location area, and click/tap 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   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.




shortcut-1.jpg

4. Type any name you would like to give the shortcut, and click/tap on the Finish button. (see screenshot below)

shortcut-2.jpg

5. Right click or press and hold on the new shortcut, and click/tap on Properties.

6. Click/tap on the Shortcut tab, then click/tap on the Change Icon button. (see screenshot below)

Shortcut-3.png

7. In the line under "Look for icons in this file", copy and paste the same full path of the application file used in the shortcut below, and press Enter. (see screenshot below)

For example: E:\Programs\Process Monitor 3.05\Procmon.exe


Shortcut-4.jpg

8. Select (highlight) the icon you want for the shortcut, and click/tap on OK. (see screenshot above)
NOTE: You can use any icon that you would like instead though.

9. Click/tap on OK. (see screenshot below step 6)

10. In Vista and Windows 7, you can now Pin to Taskbar (Windows 7 only) or Pin to Start Menu, add to Quick Launch, assign a keyboard shortcut to it, or move this shortcut to where you like for easy use.

11. In Windows 8, you can Pin to Taskbar on desktop, Pin to Start screen, add to Quick Launch, assign a keyboard shortcut to it, or move this shortcut to where you like for easy use.



That's it,
Shawn


 

Attachments

  • CPU.jpg
    CPU.jpg
    2.9 KB · Views: 568
Last edited by a moderator:
It's a quad core and I want it not to use cpu 0. So it would be 1110. Which gave me an E.
 

My Computer

System One

  • OS
    Windows 10 64bit
    Computer type
    PC/Desktop
    System Manufacturer/Model
    HP
After trying everything, this worked.
cmd.exe /c start "Sonar Platinum" /affinity E "C:\Program Files\Cakewalk\SONAR Platinum\sonarplt.exe"

I had to leave the quotation marks on. Go figure, after so many years of every instruction telling me "without quotes"

Thank you though. It works. Here's to hoping it helps with my problem.
 

My Computer

System One

  • OS
    Windows 10 64bit
    Computer type
    PC/Desktop
    System Manufacturer/Model
    HP
Great news. :party:

Yeah, whenever there's a space in the path, you'll usually need to wrap it in quotes.
 

My Computer

System One

  • OS
    64-bit Windows 10
    Computer type
    PC/Desktop
    System Manufacturer/Model
    Custom self built
    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 (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
    Sound Card
    Integrated Digital Audio (S/PDIF)
    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,
    8TB WD MyCloudEX2Ultra NAS
    PSU
    OCZ Series Gold OCZZ1000M 1000W
    Case
    Thermaltake Core P3
    Cooling
    Corsair Hydro H115i
    Keyboard
    Logitech wireless K800
    Mouse
    Logitech MX Master 3
    Internet Speed
    1 Gb/s Download and 35 Mb/s Upload
    Browser
    Internet Explorer 11
    Antivirus
    Malwarebyte Anti-Malware Premium
    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

My Computer

System One

  • OS
    64-bit Windows 10
    Computer type
    PC/Desktop
    System Manufacturer/Model
    Custom self built
    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 (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
    Sound Card
    Integrated Digital Audio (S/PDIF)
    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,
    8TB WD MyCloudEX2Ultra NAS
    PSU
    OCZ Series Gold OCZZ1000M 1000W
    Case
    Thermaltake Core P3
    Cooling
    Corsair Hydro H115i
    Keyboard
    Logitech wireless K800
    Mouse
    Logitech MX Master 3
    Internet Speed
    1 Gb/s Download and 35 Mb/s Upload
    Browser
    Internet Explorer 11
    Antivirus
    Malwarebyte Anti-Malware Premium
    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
Hello mariachipr, and welcome to Eight Forums. :)

Please go ahead and post the command you used for the shortcut's location to see if anything may be wrong with it.

hey Brink sory bringing up back an old thread. the shortcut works great for launching application rather than launch application -> task manager -> manually change affinity.

however, what if say I wish to change affinity while a software/program already launched is there anyway to use a shortcut to still adjust the affinity for that currently running program without having to use task manager and manually change it? basically im looking to toggle different affinities with a running software without having to end process and relaunch it.

this might seem silly but i have many uses for it, to maximize my hardware performance due to software being unoptimized to take full advantage of my cpu. examples below:

using Broadwell-E CPU which has turbo max 3.0, it allow me to adjust frequency say 1 core at 5ghz while all core load at only 4ghz, when unoptimized software running on 1 core capable of using the highest frequency I set, works well with software that ONLY uses 1 core/thread. however in case I have a software which is semi-optimized, sometimes uses all cores, sometimes only uses 1 or 2 cores/threads, I want to be able to toggle affinities while software running under different scenarios to take advantage highest frequency possible.
 

My Computer

System One

  • OS
    windows 8.1 and server 2012 R2
Hello m18xr2, :)

Here's a command you can use to change the CPU affinity of a running process.

wmic process where name="ProcessName" CALL setpriority ProcessIDLevel



Example:
wmic process where name="calc.exe" CALL setpriority 32768
or
wmic process where name="calc.exe" CALL setpriority "above normal"


ProcessIDLevel
idle: 64
below normal: 16384
normal: 32
above normal: 32768
high priority: 128
real time: 256
 

My Computer

System One

  • OS
    64-bit Windows 10
    Computer type
    PC/Desktop
    System Manufacturer/Model
    Custom self built
    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 (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
    Sound Card
    Integrated Digital Audio (S/PDIF)
    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,
    8TB WD MyCloudEX2Ultra NAS
    PSU
    OCZ Series Gold OCZZ1000M 1000W
    Case
    Thermaltake Core P3
    Cooling
    Corsair Hydro H115i
    Keyboard
    Logitech wireless K800
    Mouse
    Logitech MX Master 3
    Internet Speed
    1 Gb/s Download and 35 Mb/s Upload
    Browser
    Internet Explorer 11
    Antivirus
    Malwarebyte Anti-Malware Premium
    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
Hello m18xr2, :)

Here's a command you can use to change the CPU affinity of a running process.

wmic process where name="ProcessName" CALL setpriority ProcessIDLevel



Example:
wmic process where name="calc.exe" CALL setpriority 32768
or
wmic process where name="calc.exe" CALL setpriority "above normal"


ProcessIDLevel
idle: 64
below normal: 16384
normal: 32
above normal: 32768
high priority: 128
real time: 256

ty for quick respond, this is changing priority though but not changing affinity during a process, is it possible to change to different affinity while a process is already running without task manager and just use of a shortcut or CMD line?
 

My Computer

System One

  • OS
    windows 8.1 and server 2012 R2

My Computer

System One

  • OS
    64-bit Windows 10
    Computer type
    PC/Desktop
    System Manufacturer/Model
    Custom self built
    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 (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
    Sound Card
    Integrated Digital Audio (S/PDIF)
    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,
    8TB WD MyCloudEX2Ultra NAS
    PSU
    OCZ Series Gold OCZZ1000M 1000W
    Case
    Thermaltake Core P3
    Cooling
    Corsair Hydro H115i
    Keyboard
    Logitech wireless K800
    Mouse
    Logitech MX Master 3
    Internet Speed
    1 Gb/s Download and 35 Mb/s Upload
    Browser
    Internet Explorer 11
    Antivirus
    Malwarebyte Anti-Malware Premium
    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
My apologies as this is for Windows 10....

First, thank you for the information, it's very informative! But I have a problem that I need help with, I have a dual processor system, with 56 threads total. Win10 affinity selection shows threads 0-27 (Node 0) and then repeats for the 2nd processor with 0-27 (Node 2).

What modifications to the original instructions would I need to follow for this system?

uhoh3.png

Three of the GPU's are controlled from one CPU, and the 4th is controlled from the second CPU. I need to save a few threads from the 1st CPU to assist/feed the GPU's attached to it.
 

My Computer

System One

Hello Tony, and welcome to Eight Forums. :)

I haven't tested with multiple processors, but you you should be able to use the same steps. You would just have a 56 digit binary number for step 1.

To verify, check to see what the CPU affinity shows for the running process after running it from the shortcut.
 

My Computer

System One

  • OS
    64-bit Windows 10
    Computer type
    PC/Desktop
    System Manufacturer/Model
    Custom self built
    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 (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
    Sound Card
    Integrated Digital Audio (S/PDIF)
    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,
    8TB WD MyCloudEX2Ultra NAS
    PSU
    OCZ Series Gold OCZZ1000M 1000W
    Case
    Thermaltake Core P3
    Cooling
    Corsair Hydro H115i
    Keyboard
    Logitech wireless K800
    Mouse
    Logitech MX Master 3
    Internet Speed
    1 Gb/s Download and 35 Mb/s Upload
    Browser
    Internet Explorer 11
    Antivirus
    Malwarebyte Anti-Malware Premium
    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
Using the following test item:

C:\Windows\System32\cmd.exe /c start "Chrome" /affinity 80000000000000 "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" (aiming for the 56th thread)

I get:

uhoh3.png

It works! Thanks so much! :cool:
 

My Computer

System One

Great news. :party:
 

My Computer

System One

  • OS
    64-bit Windows 10
    Computer type
    PC/Desktop
    System Manufacturer/Model
    Custom self built
    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 (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
    Sound Card
    Integrated Digital Audio (S/PDIF)
    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,
    8TB WD MyCloudEX2Ultra NAS
    PSU
    OCZ Series Gold OCZZ1000M 1000W
    Case
    Thermaltake Core P3
    Cooling
    Corsair Hydro H115i
    Keyboard
    Logitech wireless K800
    Mouse
    Logitech MX Master 3
    Internet Speed
    1 Gb/s Download and 35 Mb/s Upload
    Browser
    Internet Explorer 11
    Antivirus
    Malwarebyte Anti-Malware Premium
    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
Hello Brink,i treid to change affinity but did't work.I tried c:\Windows\system32\cmd.exe /c start /affinity 1 notepad.exe,it worked.I want to change affinity of MetaTredaer4 of XM,I tried below

c:\Windows\system32\cmd.exe /c start "terminal" /affinity 1 "c:\fx\xm\terminal.exe"
(I installed some MT4,so I installed MT4 of XM in this folder(c:\fx\xm).)
but it tells me that windows cannot find "terminal.exe".

Full path of application is correct,is the program name wrong?
 

My Computer

System One

  • OS
    windows10 pro
Hello devinori, and welcome to Eight Forums. :)

If you set the CPU Affinity for "terminal.exe" via Task Manager instead, is able to do so using that method?
 

My Computer

System One

  • OS
    64-bit Windows 10
    Computer type
    PC/Desktop
    System Manufacturer/Model
    Custom self built
    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 (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
    Sound Card
    Integrated Digital Audio (S/PDIF)
    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,
    8TB WD MyCloudEX2Ultra NAS
    PSU
    OCZ Series Gold OCZZ1000M 1000W
    Case
    Thermaltake Core P3
    Cooling
    Corsair Hydro H115i
    Keyboard
    Logitech wireless K800
    Mouse
    Logitech MX Master 3
    Internet Speed
    1 Gb/s Download and 35 Mb/s Upload
    Browser
    Internet Explorer 11
    Antivirus
    Malwarebyte Anti-Malware Premium
    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
In that case, it should work with the command as well. Odd.

If you "open file location" from Task Manager and copy path for terminal.exe, does it show the same path you posted?
 

My Computer

System One

  • OS
    64-bit Windows 10
    Computer type
    PC/Desktop
    System Manufacturer/Model
    Custom self built
    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 (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
    Sound Card
    Integrated Digital Audio (S/PDIF)
    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,
    8TB WD MyCloudEX2Ultra NAS
    PSU
    OCZ Series Gold OCZZ1000M 1000W
    Case
    Thermaltake Core P3
    Cooling
    Corsair Hydro H115i
    Keyboard
    Logitech wireless K800
    Mouse
    Logitech MX Master 3
    Internet Speed
    1 Gb/s Download and 35 Mb/s Upload
    Browser
    Internet Explorer 11
    Antivirus
    Malwarebyte Anti-Malware Premium
    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
I open "file location" and copy the path,it is same I posted.
I don't know the cause of my trouble.
Because my windows is japanese ver.?(but the path doesn't include japanese character...)
 

My Computer

System One

  • OS
    windows10 pro
I don't know why,but I reboot my computer and try again,affinity is changed!!
Thanks to Brink I can change affinity!
Thanks so much!
 

My Computer

System One

  • OS
    windows10 pro
Odd, but I'm glad to hear you got it sorted. :party:
 

My Computer

System One

  • OS
    64-bit Windows 10
    Computer type
    PC/Desktop
    System Manufacturer/Model
    Custom self built
    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 (F4-3600C18D-32GTZR)
    Graphics Card(s)
    ASUS ROG-STRIX-GTX1080TI-O11G-GAMING
    Sound Card
    Integrated Digital Audio (S/PDIF)
    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,
    8TB WD MyCloudEX2Ultra NAS
    PSU
    OCZ Series Gold OCZZ1000M 1000W
    Case
    Thermaltake Core P3
    Cooling
    Corsair Hydro H115i
    Keyboard
    Logitech wireless K800
    Mouse
    Logitech MX Master 3
    Internet Speed
    1 Gb/s Download and 35 Mb/s Upload
    Browser
    Internet Explorer 11
    Antivirus
    Malwarebyte Anti-Malware Premium
    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
Back
Top