Configuring CPU binding on Windows
You can perform the following types of CPU binding on Windows:
*Binding to specific CPU cores
*Binding to multiple‑core CPU cores
The following sections describe these features.
Binding to specific CPU cores on Windows
On a multiple‑CPU machine running the Windows operating system, the operating system assigns an ID number to each processor. Windows Task Manager lists the IDs of the available processors. The numbering starts at 0.
If you are not licensed to use all the CPU cores on the iHub 3 host machine, you must bind iHub 3 to the appropriate number of CPUs. To bind iHub3 to a set of processors, you modify the acpmdconfig.xml file in AC_SERVER_HOME\etc. For example, to bind processors to four logical cores, add the following line to acpmdconfig.xml:
<DaemonCPUaffinity>0,1,2,3</DaemonCPUaffinity>
After restarting iHub, ihubc.log shows this setting in the System Bound field, for example:
System Bound : 4
How to configure CPU binding on a Windows machine
The following example shows the settings for a two CPU (0,1) machine running Windows, which uses only one CPU (0) for BIRT iHub:
1 To set CPU affinity, edit the <DaemonCPUaffinity> element in acpmdconfig.xml located in AC_SERVER_HOME\etc as follows:
<DaemonCPUaffinity>0</DaemonCPUaffinity>
2 Restart iHub.
3 Use Process Explorer to verify all BIRT iHub processes, including ihub, ihubc, and ihubd are using only CPU 0. Alternatively, verify the CPU binding by checking the Processor Affinity of the BIRT iHub process using Task Manager.
Binding to multiple-core CPU cores on Windows
You can also perform multiple‑core CPU binding, similar to the way you bind to a single CPU, as described in the previous section. To BIRT iHub, each core appears as a logical CPU.
For example, on a dual‑core, two‑CPU system, setting the DaemonCPUaffinity value to 0,1 binds BIRT iHub to both cores on the first CPU. Setting the value to 0,2 binds BIRT iHub to one core on each CPU. Setting the value to 0 binds BIRT iHub to one core on the first CPU.
Actuate does not recommend restricting BIRT iHub processing on a multiple‑core CPU machine to one core for licensing purposes. BIRT iHub System achieves significant performance gains on a multiple-core CPU machine.
For example, BIRT iHub scales nearly perfectly from 1 to 2 cores and gets 50% better throughput on a dual‑core system than on a two‑CPU system.
About processors and hyperthreading
Some Intel processors use hyperthreading, a technology that counts each physical processor as a specific number of logical processors. The operating system and any programs running on the machine see the number of logical processors, not the number of physical processors.
When a machine uses hyperthreading, Windows Task Manager lists the logical processors, not the physical ones. You specify the number of logical processors in the environment variable. When a machine uses hyperthreading, BIRT iHub calculates the number of bound processors by dividing the number of bound logical processors by the number of logical processors for each physical processor. If the result contains a decimal component, BIRT iHub uses the next highest integer. For example, it rounds 4.3 to 5. In the following example, a machine has four physical processors. With hyperthreading enabled, each physical processor corresponds to two logical processors. The machine has the following logical processors available:
*Physical processor 0 corresponds to logical processors 0 and 1.
*Physical processor 1 corresponds to logical processors 2 and 3.
*Physical processor 2 corresponds to logical processors 4 and 5.
*Physical processor 3 corresponds to logical processors 6 and 7.
If you bind BIRT iHub to the five logical processors 0, 2, 3, 6, and 7, it calculates the number of bound processors as:
5/2 = 2.5
BIRT iHub rounds this number up to determine that you have three bound processors.