Message ID | cover.1614938727.git.bnemeth@redhat.com (mailing list archive) |
---|---|
Headers |
Return-Path: <dev-bounces@dpdk.org> 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 BB7ACA0547; Fri, 5 Mar 2021 14:14:25 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 41AB040691; Fri, 5 Mar 2021 14:14:25 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by mails.dpdk.org (Postfix) with ESMTP id C736E40147 for <dev@dpdk.org>; Fri, 5 Mar 2021 14:14:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1614950063; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=aAs9ZSbZPU5Xqkb7knsmSfH8m3+AhoTQ2aWrMdAClJc=; b=S5zIVqUWnKADVeZmkKQpPMCxjXdlCSR6dlPMYUA4WZgewQWWwaHgXo6Ft7vwHNqUoQzLQ+ z3bvXhFrRvD/3sDKPW29anRW4PfUwAHMIA2t1lwFOZ3T4QciyJ7eZ5vD1ftISI8242LILJ JtsqqCfEe/VheE2Qe1H8d4QA2q5GOgw= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-494-sNhq8LkyOCO1_EfEaakaog-1; Fri, 05 Mar 2021 08:14:21 -0500 X-MC-Unique: sNhq8LkyOCO1_EfEaakaog-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5BA9894DC1 for <dev@dpdk.org>; Fri, 5 Mar 2021 13:14:20 +0000 (UTC) Received: from bnemeth.users.ipa.redhat.com (ovpn-114-231.ams2.redhat.com [10.36.114.231]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8BAF117A63; Fri, 5 Mar 2021 13:14:19 +0000 (UTC) From: Balazs Nemeth <bnemeth@redhat.com> To: bnemeth@redhat.com, dev@dpdk.org Date: Fri, 5 Mar 2021 14:13:58 +0100 Message-Id: <cover.1614938727.git.bnemeth@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=bnemeth@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH 0/8] Optimize qede use of rx/tx_entries X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://mails.dpdk.org/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <https://mails.dpdk.org/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> |
Series |
Optimize qede use of rx/tx_entries
|
|
Message
Balazs Nemeth
March 5, 2021, 1:13 p.m. UTC
This patch set optimizes qede_{rx,tx}_entry and introduces rte_pktmbuf_free_bulk in qede_process_tx_compl. The overall performance improvement depends on the use-case; in a physical-virtual-physical test on a ThunderX2 99xx system with two SMT threads used in ovs, and two cores used in a vm, an improvement of around 2.55% is observed due to this patch set. Balazs Nemeth (8): net/qede: remove flags from qede_tx_entry and simplify to rte_mbuf net/qede: avoid repeatedly calling ecore_chain_get_cons_idx net/qede: assume txq->sw_tx_ring[idx] is never null in qede_free_tx_pkt net/qede: inline qede_free_tx_pkt to prepare for rte_pktmbuf_free_bulk net/qede: use rte_pktmbuf_free_bulk instead of rte_pktmbuf_free net/qede: prefetch txq->hw_cons_ptr net/qede: prefetch next packet to free net/qede: remove page_offset from struct qede_rx_entry and simplify drivers/net/qede/qede_rxtx.c | 148 +++++++++++++++++++---------------- drivers/net/qede/qede_rxtx.h | 21 +---- 2 files changed, 81 insertions(+), 88 deletions(-) -- 2.29.2
Comments
On Fri, Mar 5, 2021 at 6:44 PM Balazs Nemeth <bnemeth@redhat.com> wrote: > > This patch set optimizes qede_{rx,tx}_entry and introduces > rte_pktmbuf_free_bulk in qede_process_tx_compl. The overall performance > improvement depends on the use-case; in a physical-virtual-physical test > on a ThunderX2 99xx system with two SMT threads used in ovs, > and two cores used in a vm, an improvement of around 2.55% is observed > due to this patch set. Cc: rmody@marvell.com Cc: shshaikh@marvell.com Hi Rasesh, Shahed Could you review this series from Balazs? > > Balazs Nemeth (8): > net/qede: remove flags from qede_tx_entry and simplify to rte_mbuf > net/qede: avoid repeatedly calling ecore_chain_get_cons_idx > net/qede: assume txq->sw_tx_ring[idx] is never null in > qede_free_tx_pkt > net/qede: inline qede_free_tx_pkt to prepare for rte_pktmbuf_free_bulk > net/qede: use rte_pktmbuf_free_bulk instead of rte_pktmbuf_free > net/qede: prefetch txq->hw_cons_ptr > net/qede: prefetch next packet to free > net/qede: remove page_offset from struct qede_rx_entry and simplify > > drivers/net/qede/qede_rxtx.c | 148 +++++++++++++++++++---------------- > drivers/net/qede/qede_rxtx.h | 21 +---- > 2 files changed, 81 insertions(+), 88 deletions(-) > > -- > 2.29.2 >
> On Fri, Mar 5, 2021 at 6:44 PM Balazs Nemeth <bnemeth@redhat.com> wrote: >> >> This patch set optimizes qede_{rx,tx}_entry and introduces >> rte_pktmbuf_free_bulk in qede_process_tx_compl. The overall performance >> improvement depends on the use-case; in a physical-virtual-physical test >> on a ThunderX2 99xx system with two SMT threads used in ovs, >> and two cores used in a vm, an improvement of around 2.55% is observed >> due to this patch set. Hi Balazs, thanks for posting, quickly reviewed it, looks reasonable. Doing a detailed review. > Cc: rmody@marvell.com > Cc: shshaikh@marvell.com> > Hi Rasesh, Shahed > Could you review this series from Balazs? Shahed is not within marvell, adding Devendra from our DPKD support team. Igor
On Wed, Mar 10, 2021 at 12:13 PM Igor Russkikh <irusskikh@marvell.com> wrote: > > > > > On Fri, Mar 5, 2021 at 6:44 PM Balazs Nemeth <bnemeth@redhat.com> wrote: > >> > >> This patch set optimizes qede_{rx,tx}_entry and introduces > >> rte_pktmbuf_free_bulk in qede_process_tx_compl. The overall performance > >> improvement depends on the use-case; in a physical-virtual-physical test > >> on a ThunderX2 99xx system with two SMT threads used in ovs, > >> and two cores used in a vm, an improvement of around 2.55% is observed > >> due to this patch set. > > Hi Balazs, thanks for posting, quickly reviewed it, looks reasonable. > Doing a detailed review. > > > Cc: rmody@marvell.com > > Cc: shshaikh@marvell.com> > > Hi Rasesh, Shahed > > Could you review this series from Balazs? > > Shahed is not within marvell, adding Devendra from our DPKD support team. Could you update the MAINTAINERS to reflect that status? > > Igor
>>> Cc: rmody@marvell.com >>> Cc: shshaikh@marvell.com> >>> Hi Rasesh, Shahed >>> Could you review this series from Balazs? >> >> Shahed is not within marvell, adding Devendra from our DPKD support team. > > Could you update the MAINTAINERS to reflect that status? Sure, done, just sent! Igor
On Wed, Mar 10, 2021 at 12:13 PM Igor Russkikh <irusskikh@marvell.com> wrote: > > > > > On Fri, Mar 5, 2021 at 6:44 PM Balazs Nemeth <bnemeth@redhat.com> wrote: > >> > >> This patch set optimizes qede_{rx,tx}_entry and introduces > >> rte_pktmbuf_free_bulk in qede_process_tx_compl. The overall performance > >> improvement depends on the use-case; in a physical-virtual-physical test > >> on a ThunderX2 99xx system with two SMT threads used in ovs, > >> and two cores used in a vm, an improvement of around 2.55% is observed > >> due to this patch set. > > Hi Balazs, thanks for posting, quickly reviewed it, looks reasonable. Waiting for the review/ack to merge this series > Doing a detailed review. > > > Cc: rmody@marvell.com > > Cc: shshaikh@marvell.com> > > Hi Rasesh, Shahed > > Could you review this series from Balazs? > > Shahed is not within marvell, adding Devendra from our DPKD support team. > > Igor
On 3/5/2021 2:13 PM, Balazs Nemeth wrote: > External Email > > ---------------------------------------------------------------------- > This patch set optimizes qede_{rx,tx}_entry and introduces > rte_pktmbuf_free_bulk in qede_process_tx_compl. The overall performance > improvement depends on the use-case; in a physical-virtual-physical test > on a ThunderX2 99xx system with two SMT threads used in ovs, > and two cores used in a vm, an improvement of around 2.55% is observed > due to this patch set. > > Balazs Nemeth (8): > net/qede: remove flags from qede_tx_entry and simplify to rte_mbuf > net/qede: avoid repeatedly calling ecore_chain_get_cons_idx > net/qede: assume txq->sw_tx_ring[idx] is never null in > qede_free_tx_pkt > net/qede: inline qede_free_tx_pkt to prepare for rte_pktmbuf_free_bulk > net/qede: use rte_pktmbuf_free_bulk instead of rte_pktmbuf_free > net/qede: prefetch txq->hw_cons_ptr > net/qede: prefetch next packet to free > net/qede: remove page_offset from struct qede_rx_entry and simplify > > drivers/net/qede/qede_rxtx.c | 148 +++++++++++++++++++---------------- > drivers/net/qede/qede_rxtx.h | 21 +---- > 2 files changed, 81 insertions(+), 88 deletions(-) Series reviewed, for the series Acked-by: Igor Russkikh <irusskikh@marvell.com> One checkpatch warn I see in patchwork output, probably worth fixing: ERROR:POINTER_LOCATION: "(foo**)" should be "(foo **)" #120: FILE: drivers/net/qede/qede_rxtx.c:56: + ret = rte_mempool_get_bulk(rxq->mb_pool, (void**)&rxq->sw_rx_ring[idx], count); Thanks Igor
On Mon, Mar 22, 2021 at 10:38 PM Igor Russkikh <irusskikh@marvell.com> wrote: > > > > On 3/5/2021 2:13 PM, Balazs Nemeth wrote: > > External Email > > > > ---------------------------------------------------------------------- > > This patch set optimizes qede_{rx,tx}_entry and introduces > > rte_pktmbuf_free_bulk in qede_process_tx_compl. The overall performance > > improvement depends on the use-case; in a physical-virtual-physical test > > on a ThunderX2 99xx system with two SMT threads used in ovs, > > and two cores used in a vm, an improvement of around 2.55% is observed > > due to this patch set. > > > > Balazs Nemeth (8): > > net/qede: remove flags from qede_tx_entry and simplify to rte_mbuf > > net/qede: avoid repeatedly calling ecore_chain_get_cons_idx > > net/qede: assume txq->sw_tx_ring[idx] is never null in > > qede_free_tx_pkt > > net/qede: inline qede_free_tx_pkt to prepare for rte_pktmbuf_free_bulk > > net/qede: use rte_pktmbuf_free_bulk instead of rte_pktmbuf_free > > net/qede: prefetch txq->hw_cons_ptr > > net/qede: prefetch next packet to free > > net/qede: remove page_offset from struct qede_rx_entry and simplify > > > > drivers/net/qede/qede_rxtx.c | 148 +++++++++++++++++++---------------- > > drivers/net/qede/qede_rxtx.h | 21 +---- > > 2 files changed, 81 insertions(+), 88 deletions(-) > > Series reviewed, for the series > > Acked-by: Igor Russkikh <irusskikh@marvell.com> > > One checkpatch warn I see in patchwork output, probably worth fixing: > > ERROR:POINTER_LOCATION: "(foo**)" should be "(foo **)" > #120: FILE: drivers/net/qede/qede_rxtx.c:56: > + ret = rte_mempool_get_bulk(rxq->mb_pool, (void**)&rxq->sw_rx_ring[idx], count); Hi @Balazs Nemeth Please fix the following checkpatc.shh and check-git-log.sh issues and add Igor reviewed by in next version. I will merge the next version with the fixes. Updaed this series status in the patchwork as "Changes requested" Wrong headline format: net/qede: remove flags from qede_tx_entry and simplify to rte_mbuf net/qede: avoid repeatedly calling ecore_chain_get_cons_idx net/qede: assume txq->sw_tx_ring[idx] is never null in qede_free_tx_pkt net/qede: inline qede_free_tx_pkt to prepare for rte_pktmbuf_free_bulk net/qede: use rte_pktmbuf_free_bulk instead of rte_pktmbuf_free net/qede: prefetch txq->hw_cons_ptr net/qede: remove page_offset from struct qede_rx_entry and simplify Headline too long: net/qede: remove flags from qede_tx_entry and simplify to rte_mbuf net/qede: assume txq->sw_tx_ring[idx] is never null in qede_free_tx_pkt net/qede: inline qede_free_tx_pkt to prepare for rte_pktmbuf_free_bulk net/qede: use rte_pktmbuf_free_bulk instead of rte_pktmbuf_free net/qede: remove page_offset from struct qede_rx_entry and simplify Invalid patch(es) found - checked 8 patches check-git-log failed ### net/qede: remove flags from qede_tx_entry and simplify to rte_mbuf WARNING:LONG_LINE: line length of 89 exceeds 80 columns #37: FILE: drivers/net/qede/qede_rxtx.c:429: + (sizeof(txq->sw_tx_ring) * txq->nb_tx_desc), total: 0 errors, 1 warnings, 0 checks, 87 lines checked ### net/qede: avoid repeatedly calling ecore_chain_get_cons_idx WARNING:BRACES: braces {} are not necessary for single statement blocks #82: FILE: drivers/net/qede/qede_rxtx.c:934: + while (remaining) { + remaining -= qede_free_tx_pkt(txq); + } total: 0 errors, 1 warnings, 0 checks, 67 lines checked ### net/qede: use rte_pktmbuf_free_bulk instead of rte_pktmbuf_free WARNING:LONG_LINE: line length of 89 exceeds 80 columns #48: FILE: drivers/net/qede/qede_rxtx.c:930: + rte_pktmbuf_free_bulk(&txq->sw_tx_ring[first_idx], mask - first_idx + 1); WARNING:LONG_LINE: line length of 84 exceeds 80 columns #51: FILE: drivers/net/qede/qede_rxtx.c:933: + rte_pktmbuf_free_bulk(&txq->sw_tx_ring[first_idx], idx - first_idx); total: 0 errors, 2 warnings, 0 checks, 32 lines checked ### net/qede: prefetch next packet to free WARNING:REPEATED_WORD: Possible repeated word: 'next' #6: While handling the current mbuf, pull the next next mbuf into the cache. WARNING:BLOCK_COMMENT_STYLE: Block comments use * on subsequent lines #21: FILE: drivers/net/qede/qede_rxtx.c:919: + /* Prefetch the next mbuf. Note that at least the last 4 mbufs + that are prefetched will not be used in the current call. */ WARNING:BLOCK_COMMENT_STYLE: Block comments use a trailing */ on a separate line #21: FILE: drivers/net/qede/qede_rxtx.c:919: + that are prefetched will not be used in the current call. */ total: 0 errors, 3 warnings, 0 checks, 11 lines checked ### net/qede: remove page_offset from struct qede_rx_entry and simplify WARNING:LONG_LINE: line length of 87 exceeds 80 columns #49: FILE: drivers/net/qede/qede_rxtx.c:56: + ret = rte_mempool_get_bulk(rxq->mb_pool, (void**)&rxq->sw_rx_ring[idx], count); ERROR:POINTER_LOCATION: "(foo**)" should be "(foo **)" #49: FILE: drivers/net/qede/qede_rxtx.c:56: + ret = rte_mempool_get_bulk(rxq->mb_pool, (void**)&rxq->sw_rx_ring[idx], count); total: 1 errors, 1 warnings, 0 checks, 174 lines checked > > Thanks > Igor
On Wed, 2021-03-24 at 14:48 +0530, Jerin Jacob wrote: > On Mon, Mar 22, 2021 at 10:38 PM Igor Russkikh > <irusskikh@marvell.com> wrote: > > > > > > > > On 3/5/2021 2:13 PM, Balazs Nemeth wrote: > > > External Email > > > > > > ----------------------------------------------------------------- > > > ----- > > > This patch set optimizes qede_{rx,tx}_entry and introduces > > > rte_pktmbuf_free_bulk in qede_process_tx_compl. The overall > > > performance > > > improvement depends on the use-case; in a physical-virtual- > > > physical test > > > on a ThunderX2 99xx system with two SMT threads used in ovs, > > > and two cores used in a vm, an improvement of around 2.55% is > > > observed > > > due to this patch set. > > > > > > Balazs Nemeth (8): > > > net/qede: remove flags from qede_tx_entry and simplify to > > > rte_mbuf > > > net/qede: avoid repeatedly calling ecore_chain_get_cons_idx > > > net/qede: assume txq->sw_tx_ring[idx] is never null in > > > qede_free_tx_pkt > > > net/qede: inline qede_free_tx_pkt to prepare for > > > rte_pktmbuf_free_bulk > > > net/qede: use rte_pktmbuf_free_bulk instead of rte_pktmbuf_free > > > net/qede: prefetch txq->hw_cons_ptr > > > net/qede: prefetch next packet to free > > > net/qede: remove page_offset from struct qede_rx_entry and > > > simplify > > > > > > drivers/net/qede/qede_rxtx.c | 148 +++++++++++++++++++---------- > > > ------ > > > drivers/net/qede/qede_rxtx.h | 21 +---- > > > 2 files changed, 81 insertions(+), 88 deletions(-) > > > > Series reviewed, for the series > > > > Acked-by: Igor Russkikh <irusskikh@marvell.com> > > > > One checkpatch warn I see in patchwork output, probably worth > > fixing: > > > > ERROR:POINTER_LOCATION: "(foo**)" should be "(foo **)" > > #120: FILE: drivers/net/qede/qede_rxtx.c:56: > > + ret = rte_mempool_get_bulk(rxq->mb_pool, (void**)&rxq- > > >sw_rx_ring[idx], count); > > > Hi @Balazs Nemeth > > Please fix the following checkpatc.shh and check-git-log.sh issues > and > add Igor reviewed by in next version. > I will merge the next version with the fixes. Updaed this series > status in the patchwork as "Changes requested" > Ok I will provide a new version next week. Thanks for the feedback! > > Wrong headline format: > net/qede: remove flags from qede_tx_entry and simplify to > rte_mbuf > net/qede: avoid repeatedly calling ecore_chain_get_cons_idx > net/qede: assume txq->sw_tx_ring[idx] is never null in > qede_free_tx_pkt > net/qede: inline qede_free_tx_pkt to prepare for > rte_pktmbuf_free_bulk > net/qede: use rte_pktmbuf_free_bulk instead of > rte_pktmbuf_free > net/qede: prefetch txq->hw_cons_ptr > net/qede: remove page_offset from struct qede_rx_entry and > simplify > Headline too long: > net/qede: remove flags from qede_tx_entry and simplify to > rte_mbuf > net/qede: assume txq->sw_tx_ring[idx] is never null in > qede_free_tx_pkt > net/qede: inline qede_free_tx_pkt to prepare for > rte_pktmbuf_free_bulk > net/qede: use rte_pktmbuf_free_bulk instead of > rte_pktmbuf_free > net/qede: remove page_offset from struct qede_rx_entry and > simplify > > Invalid patch(es) found - checked 8 patches > check-git-log failed > > > > ### net/qede: remove flags from qede_tx_entry and simplify to > rte_mbuf > > WARNING:LONG_LINE: line length of 89 exceeds 80 columns > #37: FILE: drivers/net/qede/qede_rxtx.c:429: > + (sizeof(txq->sw_tx_ring) > * txq->nb_tx_desc), > > total: 0 errors, 1 warnings, 0 checks, 87 lines checked > > ### net/qede: avoid repeatedly calling ecore_chain_get_cons_idx > > WARNING:BRACES: braces {} are not necessary for single statement > blocks > #82: FILE: drivers/net/qede/qede_rxtx.c:934: > + while (remaining) { > + remaining -= qede_free_tx_pkt(txq); > + } > > total: 0 errors, 1 warnings, 0 checks, 67 lines checked > > ### net/qede: use rte_pktmbuf_free_bulk instead of rte_pktmbuf_free > > WARNING:LONG_LINE: line length of 89 exceeds 80 columns > #48: FILE: drivers/net/qede/qede_rxtx.c:930: > + rte_pktmbuf_free_bulk(&txq->sw_tx_ring[first_idx], > mask - first_idx + 1); > > WARNING:LONG_LINE: line length of 84 exceeds 80 columns > #51: FILE: drivers/net/qede/qede_rxtx.c:933: > + rte_pktmbuf_free_bulk(&txq->sw_tx_ring[first_idx], > idx > - first_idx); > > total: 0 errors, 2 warnings, 0 checks, 32 lines checked > > ### net/qede: prefetch next packet to free > > WARNING:REPEATED_WORD: Possible repeated word: 'next' > #6: > While handling the current mbuf, pull the next next mbuf into the > cache. > > WARNING:BLOCK_COMMENT_STYLE: Block comments use * on subsequent lines > #21: FILE: drivers/net/qede/qede_rxtx.c:919: > + /* Prefetch the next mbuf. Note that at least the > last 4 mbufs > + that are prefetched will not be used in the > current call. */ > > WARNING:BLOCK_COMMENT_STYLE: Block comments use a trailing */ on a > separate line > #21: FILE: drivers/net/qede/qede_rxtx.c:919: > + that are prefetched will not be used in the > current call. */ > > total: 0 errors, 3 warnings, 0 checks, 11 lines checked > > ### net/qede: remove page_offset from struct qede_rx_entry and > simplify > > WARNING:LONG_LINE: line length of 87 exceeds 80 columns > #49: FILE: drivers/net/qede/qede_rxtx.c:56: > + ret = rte_mempool_get_bulk(rxq->mb_pool, > (void**)&rxq->sw_rx_ring[idx], count); > > ERROR:POINTER_LOCATION: "(foo**)" should be "(foo **)" > #49: FILE: drivers/net/qede/qede_rxtx.c:56: > + ret = rte_mempool_get_bulk(rxq->mb_pool, > (void**)&rxq->sw_rx_ring[idx], count); > > total: 1 errors, 1 warnings, 0 checks, 174 lines checked > > > > > > > Thanks > > Igor > Regards, Balazs