From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 383BB45E48; Fri, 13 Dec 2024 03:22:09 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BD3B540263; Fri, 13 Dec 2024 03:22:08 +0100 (CET) Received: from m16.mail.163.com (m16.mail.163.com [220.197.31.4]) by mails.dpdk.org (Postfix) with ESMTP id 6F0EF4003C for ; Fri, 13 Dec 2024 03:22:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=+edRN FWhpT9sR5/4XDnzn/GjFV3QaMoTUvLNOJPvGKQ=; b=V3d2a/2mqQ7uxaMr99EYZ QPSDbW8n9XgdzflDgCsE2/kg+figZmd0MvKfLNRDmSRgpxKcrd5eku6Iv94nd1yb eqv4UPPgKyyEsEucOKaCwTyQBDk5hcMP4icq8aPBYVCW4Jd+iuZE6dkjZgJs9N1Z kUcAlXz925VAull4cW7M08= Received: from localhost.localdomain.localdomain (unknown []) by gzga-smtp-mtada-g0-3 (Coremail) with SMTP id _____wBXZUNImltn8b_eAA--.26877S2; Fri, 13 Dec 2024 10:22:02 +0800 (CST) From: Huichao Cai To: jerinj@marvell.com, kirankumark@marvell.com, ndabilpuram@marvell.com, yanzhirun_163@163.com Cc: dev@dpdk.org Subject: [PATCH v5] graph: mcore: optimize graph search Date: Fri, 13 Dec 2024 10:21:58 +0800 Message-Id: <20241213022158.2644-1-chcchc88@163.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241114084519.5128-1-chcchc88@163.com> References: <20241114084519.5128-1-chcchc88@163.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: _____wBXZUNImltn8b_eAA--.26877S2 X-Coremail-Antispam: 1Uf129KBjvJXoW7uw43ZrWDuFy7Gw1fZF15twb_yoW5JF4rp3 WfKFW5GFZ8KF1rKrn29F4UXFW8J3Wqy39Fgry8Xw1xJrs3Jr17Zry8Jry7tFW3XrWfCa1x uw4jqr17Cr1Uu37anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07UJb15UUUUU= X-Originating-IP: [1.202.233.203] X-CM-SenderInfo: pfkfuxrfyyqiywtou0bp/1tbiIAuyF2dZHMNH-AABsV X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 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 --- doc/guides/rel_notes/release_25_03.rst | 2 ++ lib/graph/rte_graph_model_mcore_dispatch.c | 11 +++++++---- lib/graph/rte_graph_worker_common.h | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/doc/guides/rel_notes/release_25_03.rst b/doc/guides/rel_notes/release_25_03.rst index 426dfcd982..55ffe8170d 100644 --- a/doc/guides/rel_notes/release_25_03.rst +++ b/doc/guides/rel_notes/release_25_03.rst @@ -102,6 +102,8 @@ ABI Changes * No ABI change that would break compatibility with 24.11. +* graph: Added ``graph`` field to the ``dispatch`` structure in the ``rte_node`` structure. + Known Issues ------------ diff --git a/lib/graph/rte_graph_model_mcore_dispatch.c b/lib/graph/rte_graph_model_mcore_dispatch.c index a590fc9497..a81d338227 100644 --- a/lib/graph/rte_graph_model_mcore_dispatch.c +++ b/lib/graph/rte_graph_model_mcore_dispatch.c @@ -118,11 +118,14 @@ __rte_graph_mcore_dispatch_sched_node_enqueue(struct rte_node *node, 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 d3ec88519d..aef0f65673 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; }; -- 2.27.0