[dpdk-dev] [PATCH 0/2] AVX2 Vectorized Rx/Tx functions for i40e

Bruce Richardson bruce.richardson at intel.com
Thu Nov 23 17:53:12 CET 2017


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.

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          |  31 ++
 drivers/net/i40e/i40e_rxtx.h          |   6 +
 drivers/net/i40e/i40e_rxtx_vec_avx2.c | 792 ++++++++++++++++++++++++++++++++++
 4 files changed, 848 insertions(+)
 create mode 100644 drivers/net/i40e/i40e_rxtx_vec_avx2.c

-- 
2.13.6



More information about the dev mailing list