[PATCH v5 0/3] eal/topology: introduce topology-aware lcore grouping
Vipin Varghese
vipin.varghese at amd.com
Tue Apr 14 21:38:18 CEST 2026
This series introduces a topology library that groups DPDK lcores based on
CPU cache hierarchy and NUMA topology. The goal is to provide a stable and
explicit API that allows applications to select lcores with better locality
and cache sharing characteristics.
The series includes:
- EAL support for topology discovery using hwloc and domain-based lcore
grouping (L1/L2/L3/L4/NUMA)
- Topology-aware test cases validating API behavior and edge conditions
- Programmerâs guide describing the topology library and APIs
The API is marked experimental and does not change existing lcore behavior
unless explicitly used by the application.
Changes in v5:
- Addressed review comments from v4
- Fixed ARM cross-compilation issues
- Cleaned up domain iteration and error handling
- Updated tests to cover domain edge cases
- Documentation refinements and API usage clarification
Changes in v4:
- Corrected domain selection semantics
- Updated example usage
- Fixed naming and typo issues
Changes in v3:
- Fixed macro naming (USE_NO_TOPOLOGY)
- Minor cleanups based on early feedback
Tested on:
- AMD EPYC (Milan, Genoa, Siena, Turin, Turin-Dense, Sorano)
- Intel Xeon (SPR-SP, GNR-SP)
- ARM Ampere
- NVIDIA Grace Superchip
Dependencies:
- hwloc-dev (tested with 2.10.0)
Patch breakdown:
1/3 eal/topology: add topology grouping for lcores
2/3 app: add topology-aware test cases
3/3 doc: add topology library documentation
Future Work:
- integrate into examples
-- hellowrld: ready
-- pkt-distributor: in-progress
-- l2fwd: ready
-- l3fwd: to start
-- eventdevpipeline: PoC ready
- integrate topology test
-- crypto: yet to start
-- compression: yet to start
-- dma: PoC ready
- add new features for
-- PQoS: yet to start
-- Data Injection: PoC with BRDCM Thor-2 ready
Tested OS: Linux only, need help with BSD and Windows
Tested with and without hwloc-dev library for
- Ampere, aarch64, Neoverse-N1, NUMA-2, 256 CPU threads
- Grace superchip, aarch64, Neoverse-V2, NUMA-2, 144 CPU threads
- Intel GNR-SP, 6767P, NUMA-2, 256 Threads
- AMD EPYC Siena, 8534P, NUMA-1, 128 Threads
- AMD EPYC Sorano, 8635P, NUMA-1, 168 Threads
Signed-off-by: Vipin Varghese <vipin.varghese at amd.com>
``
Vipin Varghese (3):
eal/topology: add Topology grouping for lcores
app: add topology aware test case
doc: add new section topology
app/test/meson.build | 1 +
app/test/test_ring_perf.c | 416 +++++++++++++-
app/test/test_stack_perf.c | 409 ++++++++++++++
app/test/test_topology.c | 676 ++++++++++++++++++++++
config/meson.build | 18 +
doc/api/doxy-api-index.md | 1 +
doc/guides/prog_guide/index.rst | 3 +-
doc/guides/prog_guide/topology_lib.rst | 155 +++++
lib/eal/common/eal_private.h | 74 +++
lib/eal/common/eal_topology.c | 747 +++++++++++++++++++++++++
lib/eal/common/meson.build | 1 +
lib/eal/freebsd/eal.c | 10 +-
lib/eal/include/meson.build | 1 +
lib/eal/include/rte_topology.h | 255 +++++++++
lib/eal/linux/eal.c | 7 +
lib/eal/meson.build | 4 +
16 files changed, 2773 insertions(+), 5 deletions(-)
create mode 100644 app/test/test_topology.c
create mode 100644 doc/guides/prog_guide/topology_lib.rst
create mode 100644 lib/eal/common/eal_topology.c
create mode 100644 lib/eal/include/rte_topology.h
--
2.43.0
More information about the dev
mailing list