[RFC, v1 0/6] graph enhancement for multi-core dispatch
Zhirun Yan
zhirun.yan at intel.com
Thu Sep 8 04:09:53 CEST 2022
Currently, the rte_graph_walk() and rte_node_enqueue* fast path API
functions in graph lib implementation are designed to work on single-core.
This solution(RFC) proposes usage of cross-core dispatching mechanism to
enhance the graph scaling strategy. We introduce Scheduler Workqueue
then we could directly dispatch streams to another worker core which is
affinity with a specific node.
This RFC:
1. Introduce core affinity API and graph clone API.
2. Introduce key functions to enqueue/dequeue for dispatching streams.
3. Enhance rte_graph_walk by cross-core dispatch.
4. Add l2fwd-graph example and stats for cross-core dispatching.
With this patch set, it could easily plan and orchestrate stream on
multi-core systems.
Future work:
1. Support to affinity lcore set for one node.
2. Use l3fwd-graph instead of l2fwd-graph as example in patch 06.
3. Add new parameter, like --node(nodeid, lcoreid) to config node for core
affinity.
Comments and suggestions are welcome. Thanks!
Haiyue Wang (1):
examples: add l2fwd-graph
Zhirun Yan (5):
graph: introduce core affinity API into graph
graph: introduce graph clone API for other worker core
graph: enable stream moving cross cores
graph: enhance graph walk by cross-core dispatch
graph: add stats for corss-core dispatching
examples/l2fwd-graph/main.c | 455 +++++++++++++++++++++++++++++++
examples/l2fwd-graph/meson.build | 25 ++
examples/l2fwd-graph/node.c | 263 ++++++++++++++++++
examples/l2fwd-graph/node.h | 64 +++++
examples/meson.build | 1 +
lib/graph/graph.c | 121 ++++++++
lib/graph/graph_debug.c | 4 +
lib/graph/graph_populate.c | 1 +
lib/graph/graph_private.h | 43 +++
lib/graph/graph_sched.c | 194 +++++++++++++
lib/graph/graph_stats.c | 19 +-
lib/graph/meson.build | 2 +
lib/graph/node.c | 25 ++
lib/graph/rte_graph.h | 50 ++++
lib/graph/rte_graph_worker.h | 59 ++++
lib/graph/version.map | 5 +
16 files changed, 1327 insertions(+), 4 deletions(-)
create mode 100644 examples/l2fwd-graph/main.c
create mode 100644 examples/l2fwd-graph/meson.build
create mode 100644 examples/l2fwd-graph/node.c
create mode 100644 examples/l2fwd-graph/node.h
create mode 100644 lib/graph/graph_sched.c
--
2.25.1
More information about the dev
mailing list