NUMA Support

Software Architecture

IntelĀ® PAC
Napatech SmartNIC
Overview Document


The NUMA configuration is directly controlled by the ntservice.ini file and through NTPL. In the ntservice.ini file it is possible to specify the number of host buffers per SmartNIC and assign them to specific NUMA nodes. Through NTPL it is possible to set up which streams are to be used on which NUMA nodes.

This enables the applications to control the entire data flow from the SmartNIC to the host buffers and from the host buffers to the network streams, making sure that it all takes place on the same NUMA nodes as the applications are running on.
Note: The driver software does not control that a given application runs on the same NUMA node as the host buffer it uses. It is totally up to the applications to make sure that the driver software configures and uses the streams and host buffers correctly.

NUMA node configuration

The physical NUMA node for a SmartNIC, which depends on the slot where the SmartNIC is mounted, must be specified in the NumaNode parameter in the ntservice.ini file. If the NUMA node number is known, it can be entered directly. Otherwise the value -1 can be entered, and the driver will attempt to determine the physical NUMA node. If this fails, a warning message is created in the driver log, and NUMA node 0 is assumed. This can be the case for older HW not supporting NUMA nodes, in which case NUMA node 0 is the only correct value, or it can be the case for older Linux kernels, in which case NUMA node 0 might not be the correct value. In the last case the correct value must be entered manually.

When you assign NUMA nodes to host buffers using the HostBuffersRx and HostBuffersRx parameters in the ntservice.ini file, the value -1 can be used to indicate that the host buffers are to be allocated on the NUMA node resulting from the NumaNode parameter.

If the NUMA field in the NT_NetTxOpen function is set to -1, the driver will attempt to find a TX host buffer allocated on the NUMA node resulting from the NumaNode parameter. The value -2 corresponds to "don't care" and can result in any available TX host buffer.