I was trying to get this internet explorer process launched so that it can use only 4 processors on a 8 core machine. It wasnt as easy as I thought initially.
Finally I figured out an easy way and I am sure it will save a lot of time for others who require to do this.
There are few different methods we can do this.
If you are using start /affinity, you will need to specify the value for affinity which is a hexadecimal value. Here is a simple way of calculating this affinity value.
Here is how the processors will be numbered. This may be different based on the number of nodes. However the calculation remains the same. Please use terms cores/processors interchangeably.
CPU ID
Associated value (n)
Formula (2n-1)
Affinity in Hex (h)
CPU0
1
CPU1
2
3
CPU2
4
7
CPU3
8
15
F
CPU4
16
31
1F
CPU5
32
63
3F
CPU6
64
127
7F
CPU7
128
255
FF
Based on the above formula, you can run the following command. Replace h with the value in the Affinity column. This will result in using all the CPU’s listed above the specified value including the current.
Example:
If you specify a value of 1F for affinity, it will use CPU4, CPU3, CPU2, CPU2 and CPU0
If you want to use specific CPU’s, you will need to SUM the associated values and use the corresponding HEX value.
If you want to run a process on CPU0 & CPU4, you can sum the values
Start /affinity h iexplore.exe
Enjoy launching processes with CPU affinity :)
Thanks for sharing this.Is there a way to Start a Application with first set of 4 CPU and Another application with Another set (Remaining 4 cpu's)/
this commnad not work on Window xp i have tried this "Invalid Swithc /affinity Error "
Thanks for this great information. But how do i run only on CPU 6? I need to direct some parallel batch skripts to a specific CPU. For example Batch 1 to CPU 0, Batch 2 to CPU 2, Batch 3 to CPU 4, Batch 4 to CPU 6. I figured out the first ones, but do not get the clue for CPU 6.
HEX(64) should run on the process on PROC 6. Use HEX(Associated Value) for specific process