A program running under FireDaemon Pro can be bound to specific CPUs or cores.
CPU Binding settings control which CPU or core or combination of CPUs or cores a program can run on. This is particularly useful on multi-processor multi-core machines where a program consumes many CPU cycles, and it must be prevented from overwhelming the system, or its workload must be explicitly directed onto a particular CPU.
On Windows, CPU Binding is implemented by way of an affinity mask. The mask is a bitmap (represented as the integer in the first column below) that determines the processors available to the program. The table below provides examples of valid CPU affinity mask values in a FireDaemon Pro service definition.
Note: FireDaemon Pro service definition XML only supports decimal values (Base 10).
The affinity mask specifies the specific core(s) on which the program runs and not the overall number of cores. Further, the x86 CPU architecture is little-endian, which means that the bits in the affinity mask are read from right to left. For example, in the Binary Mask column, the bit value on the far right represents the first core.
For more information about CPU bindings and affinity masks, see this article in the Windows Documentation Library.
Similarly, for information about CPU processor groups, see Processor Groups.
Decimal Mask (Base 10 - 0..9) | Binary Mask (Base 2 - 0..1) | Hex Mask (Base 16 - 0..F) | CPU Cores Selected |
---|---|---|---|
0 | 0 | 0 | All |
1 | 1 | 1 | 1 |
5 | 101 | 5 | 3, 1 |
10 | 1010 | A | 4, 2 |
15 | 1111 | F | 4, 3, 2, 1 |
100 | 1100100 | 64 | 7, 6, 3 |
1000 | 1111101000 | 3E8 | 10, 9, 8, 7, 6, 4 |
10000 | 10011100010000 | 2710 | 14, 11, 10, 9, 5 |
32769 | 1000000000000001 | 8001 | 16, 1 |