From patchwork Fri Jul 1 10:28:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joyce Kong X-Patchwork-Id: 113621 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 18777A00C4; Fri, 1 Jul 2022 12:28:41 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BDD6F4069D; Fri, 1 Jul 2022 12:28:40 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mails.dpdk.org (Postfix) with ESMTP id 0928140150 for ; Fri, 1 Jul 2022 12:28:39 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BE5271424; Fri, 1 Jul 2022 03:28:38 -0700 (PDT) Received: from net-arm-n1amp-02.shanghai.arm.com (net-arm-n1amp-02.shanghai.arm.com [10.169.210.136]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id B6D793F66F; Fri, 1 Jul 2022 03:28:36 -0700 (PDT) From: Joyce Kong To: Cc: dev@dpdk.org, nd@arm.com, Joyce Kong Subject: [PATCH v2 0/2] add a fast path for memif Rx/Tx Date: Fri, 1 Jul 2022 10:28:13 +0000 Message-Id: <20220701102815.1444223-1-joyce.kong@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220517105109.1086090-1-joyce.kong@arm.com> References: <20220517105109.1086090-1-joyce.kong@arm.com> MIME-Version: 1.0 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 For memif non-zero-copy mode, there is a branch to compare the mbuf and memif buffer size during memory copying. Add a fast memory copy path by removing this branch with mbuf and memif buffer size defined at compile time. And for Tx fast path, bulk free the mbufs which come from the same mempool. When mbuf == memif buffer size, both Rx/Tx would choose the fast memcpy path. When mbuf < memif buffer size, the Rx chooses previous memcpy path while Tx chooses fast memcpy path. When mbuf > memif buffer size, the Rx chooses fast memcpy path while Tx chooses previous memcpy path. Test with 1p1q on Ampere Altra AArch64 server, --------------------------------------------------------- buf size | memif = mbuf | memif < mbuf | memif > mbuf --------------------------------------------------------- non-zc gain | 16.95% | 3.28% | 13.29% --------------------------------------------------------- zc gain | 19.43% | 4.62% | 18.14% --------------------------------------------------------- Test with 1p1q on Cascade Lake Xeon X86server, --------------------------------------------------------- buf size | memif = mbuf | memif < mbuf | memif > mbuf --------------------------------------------------------- non-zc gain | 19.97% | 2.35% | 21.43% --------------------------------------------------------- zc gain | 14.30% | -1.21% | 11.98% --------------------------------------------------------- v2: Rebase v1 and update commit message. Joyce Kong (2): net/memif: add a Rx fast path net/memif: add a Tx fast path drivers/net/memif/rte_eth_memif.c | 257 ++++++++++++++++++++---------- 1 file changed, 175 insertions(+), 82 deletions(-)