DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Vipin Varghese <vipin.varghese@amd.com>
To: <dev@dpdk.org>, <sivaprasad.tummala@amd.com>
Cc: <konstantin.ananyev@huawei.com>, <wathsala.vithanage@arm.com>,
	<bruce.richardson@intel.com>, <viktorin@cesnet.cz>,
	<mb@smartsharesystems.com>
Subject: [PATCH v5 0/3] eal/topology: introduce topology-aware lcore grouping
Date: Wed, 15 Apr 2026 01:08:18 +0530	[thread overview]
Message-ID: <20260414193850.1696-1-vipin.varghese@amd.com> (raw)
In-Reply-To: <20241105102849.1947-1-vipin.varghese@amd.com>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="y", Size: 3525 bytes --]

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@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


  parent reply	other threads:[~2026-04-14 19:39 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-05 10:28 [PATCH v4 0/4] Introduce Topology NUMA grouping for lcores Vipin Varghese
2024-11-05 10:28 ` [PATCH v4 1/4] eal/lcore: add topology based functions Vipin Varghese
2024-11-05 10:28 ` [PATCH v4 2/4] test/lcore: enable tests for topology Vipin Varghese
2024-11-05 10:28 ` [PATCH v4 3/4] doc: add topology grouping details Vipin Varghese
2024-11-05 10:28 ` [PATCH v4 4/4] examples: update with lcore topology API Vipin Varghese
2025-02-13  3:09 ` [PATCH v4 0/4] Introduce Topology NUMA grouping for lcores Varghese, Vipin
2025-02-13  8:34   ` Thomas Monjalon
2025-02-13  9:18     ` Morten Brørup
2025-03-03  9:06       ` Varghese, Vipin
2025-03-04 10:08         ` Morten Brørup
2025-03-05  7:43           ` Mattias Rönnblom
2025-03-03  8:59     ` Varghese, Vipin
2025-03-17 13:46 ` Jan Viktorin
2025-04-09 10:08   ` Varghese, Vipin
2025-06-03  6:03     ` Varghese, Vipin
2026-01-17 18:57   ` Stephen Hemminger
2026-01-19 14:55     ` [PATCH v4 0/4] Introduce Topology NUMA grouping for cores Varghese, Vipin
2026-04-14 19:38 ` Vipin Varghese [this message]
2026-04-14 19:38   ` [PATCH v5 v5 1/3] eal/topology: add Topology grouping for lcores Vipin Varghese
2026-04-15 14:06     ` Morten Brørup
2026-04-15 17:52       ` Varghese, Vipin
2026-04-14 19:38   ` [PATCH v5 v5 2/3] app: add topology aware test case Vipin Varghese
2026-04-15  5:21     ` Sudheendra Sampath
2026-04-16  7:22     ` Varghese, Vipin
2026-04-16 13:19       ` Varghese, Vipin
2026-04-17  1:21         ` Varghese, Vipin
2026-04-17  5:19           ` Sudheendra Sampath
2026-04-17  9:55             ` Varghese, Vipin
2026-04-14 19:38   ` [PATCH v5 v5 3/3] doc: add new section topology Vipin Varghese
2026-04-14 20:22   ` [PATCH v5 0/3] eal/topology: introduce topology-aware lcore grouping Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260414193850.1696-1-vipin.varghese@amd.com \
    --to=vipin.varghese@amd.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=konstantin.ananyev@huawei.com \
    --cc=mb@smartsharesystems.com \
    --cc=sivaprasad.tummala@amd.com \
    --cc=viktorin@cesnet.cz \
    --cc=wathsala.vithanage@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox