Skip to main content
See Configuration Overview for the core_binded_node/core_binded_cores fields themselves. This page covers how to fill them in deliberately, using your node’s real NUMA topology.

Inspecting your node’s CPU and NUMA layout

Before setting core_binded_node/core_binded_cores by hand, find your node’s real CPU and NUMA layout. Two common tools: lscpu prints the NUMA node count and, for each node, the CPU ids that belong to it:
numactl --hardware (package numactl) gives the same CPU breakdown plus each NUMA node’s local memory:
Use this data the same way you’d use probed numa_specs below: pick a NUMA node, use its CPU list (or a subset) as core_binded_cores, and set core_binded_node to match.

Reading probed NUMA data

If you created your config with --probe-nodes (see What Changes on Your Nodes), each node’s config.numa_specs is filled in with something like:
Each key is a NUMA node, with the CPU ids that belong to it and its local memory. This is recorded for reference; RDT doesn’t automatically bind modules to NUMA nodes for you, you decide the binding based on this data.

Setting core binding manually

To pin a module to a set of cores, set both fields in its config:
  • core_binded_node identifies which NUMA node this binding corresponds to (for your own reference; it’s not cross-checked against numa_specs).
  • core_binded_cores accepts individual CPU ids, ranges, or a mix, comma-separated (e.g. 0-5, 0,1,2, or 0-3,8,10-11). Unlike the flat comma-separated list in numa_specs.cpu, ranges are written with a hyphen here.
  • If num_threads is left unset, it’s derived automatically from the core count. If you set it explicitly, it must not exceed the number of cores in core_binded_cores.
A typical pattern: pick a NUMA node from numa_specs, use a subset (or all) of its CPU list as core_binded_cores, and set core_binded_node to that NUMA node’s id.