This document is a guide on how to enable Symmetric Multi-Processor (SMP) support in Firebird.
Symmetric Multi-Processor support is not enabled by default in Firebird 1.5. On Firebird 2.1 and newer versions, it is enabled in the Classic server architecture. However, SMP can forced by modifying the CpuAffinityMask value in the firebird.conf configuration file.
To force SMP support, first determine the number of processor cores on the Firebird server. This can be found on the Task Manager's performance tab:
In this screenshot, there seems to be four cores in use. The CpuAffinityMask value is a bitmask – which means each core is represented as a bit. A value of 0 is off, and 1 is on; e.g., 1001 means cores 3 and 0 are on, but the rest are off. To turn on all the cores, the value must be all 1s for the each core (1111):
10 = 1 (core #0)
11 = 2 (core #1)
12 = 4 (core #2)
13 = 8 (core #3)
Converting binary 1111 to decimal results to 15, which is the value that will be assigned to CpuAffinityMask.
The configuration file “firebird.conf” can be found at the Firebird installation folder and this is usually C:\Program Files (x86)\Firebird\Firebird_1_5. For other versions like 2.5, it should be D:\Program Files (x86)\Firebird\Firebird_2_5.
Edit the file firebird.conf found in this folder. Locate the lines and change from “CpuAffinityMask = 15”
to “CpuAffinityMask = <Number of Processors in Binary Code>”
If 1 processor, please change to CpuAffinityMask = 1
If 2 processors, please change to CpuAffinityMask = 3
If 4 processors, please change to CpuAffinityMask = 15
If 8 processors, please change to CpuAffinityMask = 255
(1 + 2 + 4 + 8 + 16 + 32 + 64 +128)
Save and close the file, then restart the Firebird service. The Firebird process should now utilize all cores on the server.
Prepared by V. Bautista
QnE Software Sdn. Bhd.