Project

General

Profile

Actions

Feature #6805

open

cpu-affinity: enhance CPU affinity logic with per-interface NUMA preferences

Added by Lukas Sismis 9 months ago. Updated 5 months ago.

Status:
In Progress
Priority:
Normal
Assignee:
Target version:
Effort:
Difficulty:
Label:

Description

This could help with deployments where CPU cores of 1 NUMA node are interleaved with CPU cores of the other NUMA (nodes) and there are NICs on every NUMA node.
In this scenario, the user might want to use CPU cores from both CPU NUMA nodes but control the NUMA assignment per-interface basis.

Supposed we have 2 NUMA nodes and 2 interfaces, we cannot assign CPU cores to the interfaces to be NUMA-friendly:
e.g.:
NUMA CPU1: 0,2,4,6,8
NUMA CPU2: 1,3,5,7,9

iface1 on NUMA1,
iface2 on NUMA2.

The desired assignment - cores 0,2,4,6,8 are assigned to iface1 and cores 1,3,5,7,9 are assigned to iface2.
Currently, the cores are merged together and are getting picked up in order by individual NICs, so iface1 gets cores 0,1,2,3,4 and iface2 gets cores 5,6,7,8,9.

This could be solved by more granular CPU assignment - e.g. CPU mask per interface or the CPU assigning logic could prefer CPU cores from NUMA nodes of the currently configured NIC.


Subtasks 1 (1 open0 closed)

Feature #7036: DPDK NUMA setup: choose correct CPUs from worker-cpu-setIn ProgressLukas SismisActions

Related issues 4 (4 open0 closed)

Related to Suricata - Task #3318: Research: NUMA awarenessNewOISF DevActions
Related to Suricata - Bug #7137: "invalid cpu range" when trying to use CPU affinityNewOISF DevActions
Related to Suricata - Task #3695: research: libhwloc for better autoconfigurationIn ProgressLukas SismisActions
Related to Suricata - Task #7336: Suricon 2024 brainstormNewVictor JulienActions
Actions

Also available in: Atom PDF