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 8BAEFA00C2; Mon, 22 Aug 2022 05:48:09 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1ACF441132; Mon, 22 Aug 2022 05:48:09 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mails.dpdk.org (Postfix) with ESMTP id CB485410FA for ; Mon, 22 Aug 2022 05:48:07 +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 F0B3B13D5; Sun, 21 Aug 2022 20:48:09 -0700 (PDT) Received: from net-arm-n1amp-02.shanghai.arm.com (net-arm-n1amp-02.shanghai.arm.com [10.169.210.108]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 62EA93F718; Sun, 21 Aug 2022 20:48:04 -0700 (PDT) From: Joyce Kong To: jgrajcia@cisco.com, stephen@networkplumber.org, huzaifa.rahman@emumba.com Cc: dev@dpdk.org, nd@arm.com, mb@smartsharesystems.com, ruifeng.wang@arm.com, Joyce Kong Subject: [PATCH v3 0/2] add a fast path for memif Rx/Tx Date: Mon, 22 Aug 2022 03:47:29 +0000 Message-Id: <20220822034731.528424-1-joyce.kong@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220701102815.1444223-2-joyce.kong@arm.com> References: <20220701102815.1444223-2-joyce.kong@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 copy. Add a fast memcpy path by removing this branch with mbuf and memif buffer size defined at compile time. For Rx fast path, bulk allocating mbufs to get additional speedup. For Tx fast path, bulk free 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 N1SDP AArch64 server, --------------------------------------------------------- buf size | memif = mbuf | memif < mbuf | memif > mbuf --------------------------------------------------------- non-zc gain | 47.16% | 24.67% | 12.47% --------------------------------------------------------- zc gain | 20.96% | 9.16% | 10.66% --------------------------------------------------------- Test with 1p1q on Cascade Lake Xeon X86 server, --------------------------------------------------------- buf size | memif = mbuf | memif < mbuf | memif > mbuf --------------------------------------------------------- non-zc gain | 23.52% | 14.20% | 5.10% --------------------------------------------------------- zc gain | 17.49% | 10.62% | 12.42% --------------------------------------------------------- v3: Add bulk allocation to get additional speedup for memif Rx fast path. 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 | 271 +++++++++++++++++++++--------- 1 file changed, 188 insertions(+), 83 deletions(-) -- 2.25.1