DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Morten Brørup" <mb@smartsharesystems.com>
To: "Bruce Richardson" <bruce.richardson@intel.com>
Cc: "Wenzhuo Lu" <wenzhuo.lu@intel.com>,
	"Leyi Rong" <leyi.rong@intel.com>, <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2 0/3] enable AVX512 for iavf
Date: Thu, 17 Sep 2020 11:35:33 +0200	[thread overview]
Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C612F9@smartserver.smartshare.dk> (raw)
In-Reply-To: <20200917091303.GB1568@bricha3-MOBL.ger.corp.intel.com>

> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bruce Richardson
> Sent: Thursday, September 17, 2020 11:13 AM
> 
> On Thu, Sep 17, 2020 at 09:37:29AM +0200, Morten Brørup wrote:
> > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Wenzhuo Lu
> > > Sent: Thursday, September 17, 2020 3:40 AM
> > >
> > > AVX512 instructions is supported by more and more platforms. These
> > > instructions
> > > can be used in the data path to enhance the per-core performance of
> > > packet
> > > processing.
> > > Comparing with the existing implementation, this path set
> introduces
> > > some AVX512
> > > instructions into the iavf data path, and we get a better per-code
> > > throughput.
> > >
> > > v2:
> > > Update meson.build.
> > > Repalce the deprecated 'buf_physaddr' by 'buf_iova'.
> > >
> > > Wenzhuo Lu (3):
> > >   net/iavf: enable AVX512 for legacy RX
> > >   net/iavf: enable AVX512 for flexible RX
> > >   net/iavf: enable AVX512 for TX
> > >
> > >  doc/guides/rel_notes/release_20_11.rst  |    3 +
> > >  drivers/net/iavf/iavf_ethdev.c          |    3 +-
> > >  drivers/net/iavf/iavf_rxtx.c            |   69 +-
> > >  drivers/net/iavf/iavf_rxtx.h            |   18 +
> > >  drivers/net/iavf/iavf_rxtx_vec_avx512.c | 1720
> > > +++++++++++++++++++++++++++++++
> > >  drivers/net/iavf/meson.build            |   17 +
> > >  6 files changed, 1818 insertions(+), 12 deletions(-)
> > >  create mode 100644 drivers/net/iavf/iavf_rxtx_vec_avx512.c
> > >
> > > --
> > > 1.9.3
> > >
> >
> > I am not sure I understand the full context here, so please bear with
> me if I'm completely off...
> >
> > With this patch set, it looks like the driver manipulates the mempool
> cache directly, bypassing the libararies encapsulating it.
> >
> > Isn't that going deeper into a library than expected... What if the
> implementation of the mempool library changes radically?
> >
> > And if there are performance gains to be achieved by using vector
> instructions for manipulating the mempool, perhaps your vector
> optimizations should go into the mempool library instead?
> >
> 
> Looking specifically at the descriptor re-arm code, the benefit from
> working off the mempool cache directly comes from saving loads by
> merging
> the code blocks, rather than directly from the vectorization itself -
> though the vectorization doesn't hurt. The original code having a
> separate
> mempool function worked roughly like below:
> 
> 1. mempool code loads mbuf pointers from cache
> 2. mempool code writes mbuf pointers to the SW ring for the NIC
> 3. driver code loads the mempool pointers from the SW ring
> 4. driver code then does the rest of the descriptor re-arm.
> 
> The benefit comes from eliminating step 3, the loads in the driver,
> which
> are dependent upon the previous stores. By having the driver itself
> read
> from the mempool cache (the code still uses mempool functions for every
> other part, since everything beyond the cache depends on the
> ring/stack/bucket implementation), we can have the stores go out, and
> while
> they are completing reuse the already-loaded data to do the descriptor
> rearm.
> 
> Hope this clarifies things.
> 
> /Bruce
> 

Thank you for the detailed explanation, Bruce.

It makes sense to me now. So,

Acked-By: Morten Brørup <mb@smartsharesystems.com>


Med venlig hilsen / kind regards
- Morten Brørup




  reply	other threads:[~2020-09-17  9:35 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-10  5:59 [dpdk-dev] [PATCH " Wenzhuo Lu
2020-09-10  5:59 ` [dpdk-dev] [PATCH 1/3] net/iavf: enable AVX512 for legacy RX Wenzhuo Lu
2020-09-10  9:29   ` Bruce Richardson
2020-09-11  3:06     ` Lu, Wenzhuo
2020-09-10  5:59 ` [dpdk-dev] [PATCH 2/3] net/iavf: enable AVX512 for flexible RX Wenzhuo Lu
2020-09-10  5:59 ` [dpdk-dev] [PATCH 3/3] net/iavf: enable AVX512 for TX Wenzhuo Lu
2020-09-15  1:17   ` Wang, Haiyue
2020-09-17  1:29     ` Lu, Wenzhuo
2020-09-17  1:39 ` [dpdk-dev] [PATCH v2 0/3] enable AVX512 for iavf Wenzhuo Lu
2020-09-17  1:39   ` [dpdk-dev] [PATCH v2 1/3] net/iavf: enable AVX512 for legacy RX Wenzhuo Lu
2020-09-17  1:39   ` [dpdk-dev] [PATCH v2 2/3] net/iavf: enable AVX512 for flexible RX Wenzhuo Lu
2020-09-17  1:39   ` [dpdk-dev] [PATCH v2 3/3] net/iavf: enable AVX512 for TX Wenzhuo Lu
2020-09-17  7:37   ` [dpdk-dev] [PATCH v2 0/3] enable AVX512 for iavf Morten Brørup
2020-09-17  9:13     ` Bruce Richardson
2020-09-17  9:35       ` Morten Brørup [this message]
2020-09-21  8:13 ` [dpdk-dev] [PATCH v3 " Wenzhuo Lu
2020-09-21  8:13   ` [dpdk-dev] [PATCH v3 1/3] net/iavf: enable AVX512 for legacy RX Wenzhuo Lu
2020-09-21  8:13   ` [dpdk-dev] [PATCH v3 2/3] net/iavf: enable AVX512 for flexible RX Wenzhuo Lu
2020-09-21  8:13   ` [dpdk-dev] [PATCH v3 3/3] net/iavf: enable AVX512 for TX Wenzhuo Lu
2020-09-21 19:10     ` Morten Brørup
2020-09-22  1:34       ` Lu, Wenzhuo
2020-09-27  1:30 ` [dpdk-dev] [PATCH v4 0/3] enable AVX512 for iavf Wenzhuo Lu
2020-09-27  1:30   ` [dpdk-dev] [PATCH v4 1/3] net/iavf: enable AVX512 for legacy RX Wenzhuo Lu
2020-09-27  1:30   ` [dpdk-dev] [PATCH v4 2/3] net/iavf: enable AVX512 for flexible RX Wenzhuo Lu
2020-09-27  1:30   ` [dpdk-dev] [PATCH v4 3/3] net/iavf: enable AVX512 for TX Wenzhuo Lu
2020-10-21  7:47 ` [dpdk-dev] [PATCH v5 0/3] enable AVX512 for iavf Wenzhuo Lu
2020-10-21  7:47   ` [dpdk-dev] [PATCH v5 1/3] net/iavf: enable AVX512 for legacy RX Wenzhuo Lu
2020-10-21  7:47   ` [dpdk-dev] [PATCH v5 2/3] net/iavf: enable AVX512 for flexible RX Wenzhuo Lu
2020-10-21  7:47   ` [dpdk-dev] [PATCH v5 3/3] net/iavf: enable AVX512 for TX Wenzhuo Lu
2020-10-28  5:14 ` [dpdk-dev] [PATCH v6 0/3] enable AVX512 for iavf Wenzhuo Lu
2020-10-28  5:14   ` [dpdk-dev] [PATCH v6 1/3] net/iavf: enable AVX512 for legacy RX Wenzhuo Lu
2020-10-28  5:14   ` [dpdk-dev] [PATCH v6 2/3] net/iavf: enable AVX512 for flexible RX Wenzhuo Lu
2020-10-28  5:15   ` [dpdk-dev] [PATCH v6 3/3] net/iavf: enable AVX512 for TX Wenzhuo Lu
2020-10-29  1:24 ` [dpdk-dev] [PATCH v7 0/3] enable AVX512 for iavf Wenzhuo Lu
2020-10-29  1:24   ` [dpdk-dev] [PATCH v7 1/3] net/iavf: enable AVX512 for legacy Rx Wenzhuo Lu
2020-10-29  1:24   ` [dpdk-dev] [PATCH v7 2/3] net/iavf: enable AVX512 for flexible Rx Wenzhuo Lu
2020-10-29  1:24   ` [dpdk-dev] [PATCH v7 3/3] net/iavf: enable AVX512 for Tx Wenzhuo Lu
2020-10-30 23:29     ` Ferruh Yigit
2020-10-29  4:00   ` [dpdk-dev] [PATCH v7 0/3] enable AVX512 for iavf Zhang, Qi Z

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=98CBD80474FA8B44BF855DF32C47DC35C612F9@smartserver.smartshare.dk \
    --to=mb@smartsharesystems.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=leyi.rong@intel.com \
    --cc=wenzhuo.lu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).