You can perform the following types of CPU binding on Windows:
Binding to specific CPU cores
Binding to multiple-core CPU cores
Binding an Actuate process to a processor
The following sections describe these features.
Binding to specific CPU cores
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
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.
Binding an Actuate process to a processor
If you bind a BIRT iHub ihubd process to a subset of CPU cores on a machine, you can also bind the Factory, View, Integration, and Caching processes to a specific CPU. Under some conditions, binding an Actuate process to a specific CPU can enhance performance. Binding an Actuate process to a CPU has no effect on the CPU calculations BIRT iHub performs to determine the maximum number of licensed CPU cores.
If you bind a process to a CPU core, you must bind the CPU core to both BIRT iHub ihubd and the process. BIRT iHub writes to the error log and stops the process if you bind a process to a CPU that you do not bind to BIRT iHub ihubd.
To bind a BIRT iHub ihubd process to CPU processors, use the ProcessorAffinity element in the acserverconfig.xml file for BIRT iHub. List the IDs for the CPU cores to which to bind a process as Item subelements in the following ProcessorAffinity elements:
To bind Factory processes, specify the CPU IDs in the ProcessorAffinity element within the ReportingService element.
To bind View processes, specify the CPU IDs in the ProcessorAffinity element within the ViewingService element.
To bind Integration processes, specify the CPU IDs in the ProcessorAffinity element within the IntegrationService element.
You must also ensure that you bind the specified CPU cores to ihubd for the BIRT iHub machine. For example, on a four-CPU machine, the following ProcessorAffinity example binds View processes to CPU IDs 0 and 2:
<ViewingService
EnableViewingService="true"
<ProcessorAffinity>
<Item>0</Item>
<Item>2</Item>
</ProcessorAffinity>
/>
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.