net/af_xdp: prefer busy polling
authorCiara Loftus <ciara.loftus@intel.com>
Wed, 10 Mar 2021 07:48:16 +0000 (07:48 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 10 Mar 2021 17:49:32 +0000 (18:49 +0100)
commit055a393626ed25ccf92e7c685495a87f6fb6ab52
tree5609900e3ef844c44c69ab33be92f6189cecb01c
parent63e8989fe5a4b599b638d1296433787eb0032849
net/af_xdp: prefer busy polling

This commit introduces support for preferred busy polling
to the AF_XDP PMD. This feature aims to improve single-core
performance for AF_XDP sockets under heavy load.

A new vdev arg is introduced called 'busy_budget' whose default
value is 64. busy_budget is the value supplied to the kernel
with the SO_BUSY_POLL_BUDGET socket option and represents the
busy-polling NAPI budget. To set the budget to a different value
eg. 256:

--vdev=net_af_xdp0,iface=eth0,busy_budget=256

Preferred busy polling is enabled by default provided a kernel with
version >= v5.11 is in use. To disable it, set the budget to zero.

The following settings are also strongly recommended to be used in
conjunction with this feature:

echo 2 | sudo tee /sys/class/net/eth0/napi_defer_hard_irqs
echo 200000 | sudo tee /sys/class/net/eth0/gro_flush_timeout

.. where eth0 is the interface being used by the PMD.

Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
doc/guides/nics/af_xdp.rst
doc/guides/rel_notes/release_21_05.rst
drivers/net/af_xdp/compat.h
drivers/net/af_xdp/rte_eth_af_xdp.c