DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: qi.z.zhang@intel.com, beilei.xing@intel.com
Cc: dev@dpdk.org, helin.zhang@intel.com, ferruh.yigit@intel.com,
	Bruce Richardson <bruce.richardson@intel.com>
Subject: [dpdk-dev] [PATCH v2 0/2] AVX2 Vectorized Rx/Tx functions for i40e
Date: Tue,  9 Jan 2018 14:32:52 +0000	[thread overview]
Message-ID: <20180109143254.234428-1-bruce.richardson@intel.com> (raw)
In-Reply-To: <20171123165314.168786-1-bruce.richardson@intel.com>

This patch adds an AVX2 vectorized path to the i40e driver, based on the
existing SSE4.2 version. Using AVX2 instructions gives better performance
than the SSE version, though the percentage increase depends on the exact
settings used. For example:

* Using 16B rather than 32B descriptors gives the biggest benefit since
  2 descriptors at a time can be read, rather than just 1 when 32B ones
  are used.
* Bigger burst sizes for RX gives improved performance - while we see an
  improvement with testpmd with the default burst size of 32, burst sizes
  of up to 128 give further improvements
* In my testing, most of the improvement comes from faster processing on
  the RX path, though the improved TX also gives benefit.

This has been tested on a system with CPU: "Intel(R) Xeon(R) Gold 6154 CPU
@ 3.00GHz", and I've focused on testing with Rx ring sizes of approx 1k -
generally --rxd=1024 and --txd=512, rather than the defaults which tend to
give poorer zero-loss performance due to the smaller amount of buffering.

V2:
* Fixed incorrect config variable reference in makefile
* Added missing stub function for when vector drivers are disabled
* Added missing references to the new functions when checking for vector
  code paths, e.g. for ring tear-down

Bruce Richardson (2):
  net/i40e: add AVX2 Tx function
  net/i40e: add AVX2 Rx function

 drivers/net/i40e/Makefile             |  19 +
 drivers/net/i40e/i40e_rxtx.c          |  66 ++-
 drivers/net/i40e/i40e_rxtx.h          |   6 +
 drivers/net/i40e/i40e_rxtx_vec_avx2.c | 792 ++++++++++++++++++++++++++++++++++
 4 files changed, 880 insertions(+), 3 deletions(-)
 create mode 100644 drivers/net/i40e/i40e_rxtx_vec_avx2.c

-- 
2.14.3

  parent reply	other threads:[~2018-01-09 14:33 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-23 16:53 [dpdk-dev] [PATCH " Bruce Richardson
2017-11-23 16:53 ` [dpdk-dev] [PATCH 1/2] net/i40e: add AVX2 Tx function Bruce Richardson
2017-11-29  2:13   ` Ferruh Yigit
2017-11-29 10:02     ` Bruce Richardson
2017-11-23 16:53 ` [dpdk-dev] [PATCH 2/2] net/i40e: add AVX2 Rx function Bruce Richardson
2017-11-23 16:56 ` [dpdk-dev] [PATCH 0/2] AVX2 Vectorized Rx/Tx functions for i40e Bruce Richardson
2017-11-27 10:45 ` Zhang, Qi Z
2018-01-09 14:32 ` Bruce Richardson [this message]
2018-01-09 14:32   ` [dpdk-dev] [PATCH v2 1/2] net/i40e: add AVX2 Tx function Bruce Richardson
2018-01-09 14:32   ` [dpdk-dev] [PATCH v2 2/2] net/i40e: add AVX2 Rx function Bruce Richardson
2018-01-09 16:30   ` [dpdk-dev] [PATCH v2 0/2] AVX2 Vectorized Rx/Tx functions for i40e John Fastabend
2018-01-10  9:27     ` Richardson, Bruce
2018-01-10 14:25       ` Vincent JARDIN
2018-01-10 14:38         ` Bruce Richardson
2018-01-10  7:11   ` Li, Xiaoyun
2018-01-10  7:14   ` Zhang, Qi Z
2018-01-10 13:49     ` Zhang, Helin

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=20180109143254.234428-1-bruce.richardson@intel.com \
    --to=bruce.richardson@intel.com \
    --cc=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=helin.zhang@intel.com \
    --cc=qi.z.zhang@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).