[PATCH dpdk/26.11 v4 0/2] graph: topological bitmap scheduling

David Marchand david.marchand at redhat.com
Thu Oct 15 19:41:52 CEST 2026


On Thu, 15 Oct 2026 at 16:32, Robin Jarry <rjarry at redhat.com> wrote:
>
> Replace the FIFO circular buffer in rte_graph with a bitmap and a
> topologically-sorted schedule table. The old circular buffer appended
> nodes in enqueue order, effectively a partial DFS driven by per-node
> process functions. This caused convergence nodes to be visited before
> all upstream branches had run, resulting in redundant visits with
> smaller batches.
>
> Nodes are now sorted by (topo_order, node_id) using BFS depth from
> source nodes, ensuring upstream nodes are always visited before
> downstream ones. The diamond perf test shows a ~10% throughput
> improvement (converge visited once at 256 objs/call instead of twice
> at 128).
>
> Changes v3 -> v4:
>  - fixed check_includes error after RTE_PTR_ADD() changes
>  - s/__rte_always_inline/inline/ to fix checkpatch warnings
>  - removed entry from deprecation notice
>  - added release notes entries
>
> Changes v2 -> v3:
>  - dropped explicit priority field (int16_t) from rte_node_register
>    and struct node; topological ordering from BFS is sufficient
>  - removed hiprio worker node type from diamond test; topo_order
>    alone provides correct ordering without user intervention
>  - updated documentation and SVG diagram accordingly
>
> Changes v1 -> v2:
>  - split diamond perf test into separate preparatory patch
>  - added topological depth (topo_order) as secondary sort key to
>    preserve upstream-before-downstream ordering, preventing a
>    regression in the reverse tree test
>  - restored idx == 0 guard on bitmap set in the enqueue path to
>    avoid a ~15% throughput regression caused by touching the pending
>    bitmap cache line on every enqueue call
>  - added performance numbers measured before and after
>
> Cc: Christophe Fontaine <cfontain at redhat.com>
> Cc: David Marchand <david.marchand at redhat.com>
> Cc: Jerin Jacob <jerinj at marvell.com>
> Cc: Kiran Kumar Kokkilagadda <kirankumark at marvell.com>
> Cc: Konstantin Ananyev <konstantin.ananyev at huawei.com>
> Cc: Maxime Leroy <maxime at leroys.fr>
> Cc: Nithin Kumar Dabilpuram <ndabilpuram at marvell.com>
> Cc: Vladimir Medvedkin <vladimir.medvedkin at intel.com>
> Cc: Zhirun Yan <yanzhirun_163 at 163.com>
>
> Robin Jarry (2):
>   graph: add diamond topology performance test
>   graph: replace circular buffer with topological bitmap
>
>  app/test/test_graph_perf.c                    |  130 +-
>  doc/guides/prog_guide/graph_lib.rst           |   29 +-
>  .../prog_guide/img/graph_mem_layout.svg       | 1823 +++++++----------
>  doc/guides/rel_notes/deprecation.rst          |    8 -
>  doc/guides/rel_notes/release_26_11.rst        |   11 +
>  lib/graph/graph.c                             |   27 +-
>  lib/graph/graph_debug.c                       |   12 +-
>  lib/graph/graph_ops.c                         |   46 +
>  lib/graph/graph_populate.c                    |  107 +-
>  lib/graph/graph_private.h                     |   41 +-
>  lib/graph/rte_graph_model_mcore_dispatch.h    |   34 +-
>  lib/graph/rte_graph_model_rtc.h               |   63 +-
>  lib/graph/rte_graph_worker.h                  |    2 +-
>  lib/graph/rte_graph_worker_common.h           |   80 +-
>  14 files changed, 1170 insertions(+), 1243 deletions(-)

Series applied, thanks.


-- 
David Marchand



More information about the dev mailing list