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 84B4241CE4; Mon, 20 Feb 2023 01:22:30 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6F0E342D93; Mon, 20 Feb 2023 01:22:30 +0100 (CET) Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by mails.dpdk.org (Postfix) with ESMTP id C91F540691 for ; Mon, 20 Feb 2023 01:22:29 +0100 (CET) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 23878320091C; Sun, 19 Feb 2023 19:22:28 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Sun, 19 Feb 2023 19:22:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h= cc:cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm1; t=1676852547; x= 1676938947; bh=oT5LRLy/gxg0T5yFkqrVC68KI3ocazgmGv6uKdJ5E1Y=; b=Z carVKhvi75y5jSn9/GQ4H0xxzfcGFOBQXB4s1uup0YA1SmwZdtSny4oVtEB+mgWX AUU/N8PgxtuwWfQXPfeoWmKNX88pb7IaLbPwEwyDunSD8K1eFcR6w4ZCLG/XXEle fhyzp0DGZACwskD2yVsYrijW5PLT5pkZNU0cbhg11b+HfDyACwplu2leIni+4qJe u2tcWyMWXlMeVN5+4KK+vQ2nJ3BO1s9/g4C5igqg/G3GNGAwhvjFVGbeVUYC2TgC aYXr+4YmKkwnaB/Awmz3wlJcPqNguT1ylRB0rQpF1xA9TLyShbtSuYYe5y823xWo 1+LY44R3iiOj0BHoDdQsw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1676852547; x= 1676938947; bh=oT5LRLy/gxg0T5yFkqrVC68KI3ocazgmGv6uKdJ5E1Y=; b=f eaQzwn+URs5JwCkrzcJTMuhjIAwoDrqcAlzgfPKotlyJkOLrfpszoIZk1MLvZqA5 agHxt/YBZNofDZEVkbFmrlByV2RVXOlVNpyMZUV9Fw1wYHtoQFXYh456c3tnCuDJ s9KqazumCiTMGdgh2KLb360LMIyqSzMBQrpsM/X4VIzen1rm8n52Pym1AGN4QZKf AKi5yKIu3794FhZR9w/O0MvFS2hd6ibCLQOm/J70KW9pAKpkpdze38gHXgoQgxXY I/5EOi2Rl+Qdl1CA10gLd3O0sWmcVMnHn5nczaXMlEvSA1NyamQgGJtNjkFeHsK8 V4qMw+PsXgiCZpKA/3qIw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudejgedgudelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvvefufffkjghfggfgtgesthfuredttddtvdenucfhrhhomhepvfhhohhm rghsucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenuc ggtffrrghtthgvrhhnpefhhefhledvkeehtdevgeejudettdekvdelleetgeeijedukeet gfdujedvfffhgeenucffohhmrghinhepshgthhgvugdrtghomhenucevlhhushhtvghruf hiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehthhhomhgrshesmhhonhhjrghl ohhnrdhnvght X-ME-Proxy: Feedback-ID: i47234305:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 19 Feb 2023 19:22:26 -0500 (EST) From: Thomas Monjalon To: jerinj@marvell.com, kirankumark@marvell.com, ndabilpuram@marvell.com Cc: dev@dpdk.org, cunming.liang@intel.com, haiyue.wang@intel.com, Zhirun Yan , Zhirun Yan Subject: Re: [PATCH v1 00/13] graph enhancement for multi-core dispatch Date: Mon, 20 Feb 2023 01:22:25 +0100 Message-ID: <3517338.eFTFzoEnKi@thomas> In-Reply-To: <20221117050926.136974-1-zhirun.yan@intel.com> References: <20221117050926.136974-1-zhirun.yan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" 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 This series doesn't look reviewed. What is the status? 17/11/2022 06:09, Zhirun Yan: > Currently, rte_graph supports RTC (Run-To-Completion) model within each > of a single core. > RTC is one of the typical model of packet processing. Others like > Pipeline or Hybrid are lack of support. > > The patch set introduces a 'generic' model selection which is a > self-reacting scheme according to the core affinity. > The new model enables a cross-core dispatching mechanism which employs a > scheduling work-queue to dispatch streams to other worker cores which > being associated with the destination node. When core flavor of the > destination node is a default 'current', the stream can be continue > executed as normal. > > Example: > 3-node graph targets 3-core budget > > Generic Model > RTC: > Config Graph-A: node-0->current; node-1->current; node-2->current; > Graph-A':node-0/1/2 @0, Graph-A':node-0/1/2 @1, Graph-A':node-0/1/2 @2 > > + - - - - - - - - - - - - - - - - - - - - - + > ' Core #0/1/2 ' > ' ' > ' +--------+ +---------+ +--------+ ' > ' | Node-0 | --> | Node-1 | --> | Node-2 | ' > ' +--------+ +---------+ +--------+ ' > ' ' > + - - - - - - - - - - - - - - - - - - - - - + > > Pipeline: > Config Graph-A: node-0->0; node-1->1; node-2->2; > Graph-A':node-0 @0, Graph-A':node-1 @1, Graph-A':node-2 @2 > > + - - - - - -+ +- - - - - - + + - - - - - -+ > ' Core #0 ' ' Core #1 ' ' Core #2 ' > ' ' ' ' ' ' > ' +--------+ ' ' +--------+ ' ' +--------+ ' > ' | Node-0 | ' --> ' | Node-1 | ' --> ' | Node-2 | ' > ' +--------+ ' ' +--------+ ' ' +--------+ ' > ' ' ' ' ' ' > + - - - - - -+ +- - - - - - + + - - - - - -+ > > Hybrid: > Config Graph-A: node-0->current; node-1->current; node-2->2; > Graph-A':node-0/1 @0, Graph-A':node-0/1 @1, Graph-A':node-2 @2 > > + - - - - - - - - - - - - - - - + + - - - - - -+ > ' Core #0 ' ' Core #2 ' > ' ' ' ' > ' +--------+ +--------+ ' ' +--------+ ' > ' | Node-0 | ------> | Node-1 | ' --> ' | Node-2 | ' > ' +--------+ +--------+ ' ' +--------+ ' > ' ' ' ' > + - - - - - - - - - - - - - - - + + - - - - - -+ > ^ > | > | > + - - - - - - - - - - - - - - - + | > ' Core #1 ' | > ' ' | > ' +--------+ +--------+ ' | > ' | Node-0 | ------> | Node-1 | ' --------+ > ' +--------+ +--------+ ' > ' ' > + - - - - - - - - - - - - - - - + > > > The patch set has been break down as below: > > 1. Split graph worker into common and default model part. > 2. Inline graph node processing and graph circular buffer walking to make > it reusable. > 3. Add set/get APIs to choose worker model. > 4. Introduce core affinity API to set the node run on specific worker core. > (only use in new model) > 5. Introduce graph affinity API to bind one graph with specific worker > core. > 6. Introduce graph clone API. > 7. Introduce stream moving with scheduler work-queue in patch 8,9,10. > 8. Add stats for new models. > 9. Abstract default graph config process and integrate new model into > example/l3fwd-graph. Add new parameters for model choosing. > > We could run with new worker model by this: > ./dpdk-l3fwd-graph -l 8,9,10,11 -n 4 -- -p 0x1 --config="(0,0,9)" -P > --model="generic" > > References: > https://static.sched.com/hosted_files/dpdkuserspace22/a6/graph%20introduce%20remote%20dispatch%20for%20mult-core%20scaling.pdf > > Zhirun Yan (13): > graph: split graph worker into common and default model > graph: move node process into inline function > graph: add macro to walk on graph circular buffer > graph: add get/set graph worker model APIs > graph: introduce core affinity API > graph: introduce graph affinity API > graph: introduce graph clone API for other worker core > graph: introduce stream moving cross cores > graph: enable create and destroy graph scheduling workqueue > graph: introduce graph walk by cross-core dispatch > graph: enable graph generic scheduler model > graph: add stats for corss-core dispatching > examples/l3fwd-graph: introduce generic worker model > > examples/l3fwd-graph/main.c | 218 +++++++++-- > lib/graph/graph.c | 179 +++++++++ > lib/graph/graph_debug.c | 6 + > lib/graph/graph_populate.c | 1 + > lib/graph/graph_private.h | 44 +++ > lib/graph/graph_stats.c | 74 +++- > lib/graph/meson.build | 3 +- > lib/graph/node.c | 1 + > lib/graph/rte_graph.h | 44 +++ > lib/graph/rte_graph_model_generic.c | 179 +++++++++ > lib/graph/rte_graph_model_generic.h | 114 ++++++ > lib/graph/rte_graph_model_rtc.h | 22 ++ > lib/graph/rte_graph_worker.h | 516 ++------------------------ > lib/graph/rte_graph_worker_common.h | 545 ++++++++++++++++++++++++++++ > lib/graph/version.map | 8 + > 15 files changed, 1430 insertions(+), 524 deletions(-) > create mode 100644 lib/graph/rte_graph_model_generic.c > create mode 100644 lib/graph/rte_graph_model_generic.h > create mode 100644 lib/graph/rte_graph_model_rtc.h > create mode 100644 lib/graph/rte_graph_worker_common.h > >