> -----Original Message-----
> From: Huichao Cai <chcch...@163.com>
> Sent: Monday, November 11, 2024 9:33 AM
> To: Jerin Jacob <jer...@marvell.com>; Kiran Kumar Kokkilagadda
> <kirankum...@marvell.com>; Nithin Kumar Dabilpuram
> <ndabilpu...@marvell.com>; yanzhirun_...@163.com
> Cc: dev@dpdk.org; Huichao cai <chcch...@163.com>
> Subject: [EXTERNAL] [PATCH v2] graph: mcore: optimize graph search
>
> From: Huichao cai <chcchc88@ 163. com> In the function
> __rte_graph_mcore_dispatch_sched_node_enqueue, use a slower loop to
> search for the graph, modify the search logic to record the result of the
> first
> search, and use this record for subsequent
> From: Huichao cai <chcch...@163.com>
>
> In the function __rte_graph_mcore_dispatch_sched_node_enqueue,
> use a slower loop to search for the graph, modify the search logic to record
> the
> result of the first search, and use this record for subsequent searches to
> improve search speed.
>
> Signed-off-by: Huichao cai <chcch...@163.com>
> ---
> lib/graph/rte_graph_model_mcore_dispatch.c | 11 +++++++----
> lib/graph/rte_graph_worker_common.h | 1 +
> 2 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/lib/graph/rte_graph_model_mcore_dispatch.c
> b/lib/graph/rte_graph_model_mcore_dispatch.c
> index a590fc9..a81d338 100644
> --- a/lib/graph/rte_graph_model_mcore_dispatch.c
> +++ b/lib/graph/rte_graph_model_mcore_dispatch.c
> @@ -118,11 +118,14 @@
> struct rte_graph_rq_head *rq) {
> const unsigned int lcore_id = node->dispatch.lcore_id;
> - struct rte_graph *graph;
> + struct rte_graph *graph = node->dispatch.graph;
>
> - SLIST_FOREACH(graph, rq, next)
> - if (graph->dispatch.lcore_id == lcore_id)
> - break;
> + if (unlikely((!graph) || (graph->dispatch.lcore_id != lcore_id))) {
> + SLIST_FOREACH(graph, rq, next)
> + if (graph->dispatch.lcore_id == lcore_id)
> + break;
> + node->dispatch.graph = graph;
> + }
>
> return graph != NULL ? __graph_sched_node_enqueue(node, graph) :
> false; } diff --git a/lib/graph/rte_graph_worker_common.h
> b/lib/graph/rte_graph_worker_common.h
> index a518af2..4c2432b 100644
> --- a/lib/graph/rte_graph_worker_common.h
> +++ b/lib/graph/rte_graph_worker_common.h
> @@ -110,6 +110,7 @@ struct __rte_cache_aligned rte_node {
> unsigned int lcore_id; /**< Node running lcore. */
> uint64_t total_sched_objs; /**< Number of objects
> scheduled. */
> uint64_t total_sched_fail; /**< Number of scheduled
> failure. */
> + struct rte_graph *graph; /**< Graph corresponding to
> lcore_id. */
Need to conclude the ABI related discussion here before making change
https://patches.dpdk.org/project/dpdk/patch/1730966682-2632-1-git-send-email-chcch...@163.com/
> } dispatch;
> };
> rte_graph_off_t xstat_off; /**< Offset to xstat counters. */
> --
> 1.8.3.1