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. */
                } dispatch;
        };
        rte_graph_off_t xstat_off; /**< Offset to xstat counters. */
-- 
1.8.3.1

Reply via email to