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

Reply via email to