[ovs-dev] [PATCH] Documentation: add notes for TSO & i40e

Ciara Loftus ciara.loftus at intel.com
Mon Jan 13 15:48:29 UTC 2020

When using TSO in OVS-DPDK with an i40e device, the following
commit is required for DPDK, which fixes an issue on the TSO path:
Document this as a limitation until a DPDK release with the fix
included is supported by OVS.

Also, document best known methods for performance tuning when
testing TSO with the tool iperf.

Signed-off-by: Ciara Loftus <ciara.loftus at intel.com>
 Documentation/topics/dpdk/tso.rst | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/Documentation/topics/dpdk/tso.rst b/Documentation/topics/dpdk/tso.rst
index 189c86480..5c56c458c 100644
--- a/Documentation/topics/dpdk/tso.rst
+++ b/Documentation/topics/dpdk/tso.rst
@@ -94,3 +94,30 @@ datapath must support TSO or packets using that feature will be dropped
 on ports without TSO support.  That also means guests using vhost-user
 in client mode will receive TSO packet regardless of TSO being enabled
 or disabled within the guest.
+When the NIC performing the segmentation is using the i40e DPDK PMD, a fix
+must be included in the DPDK build, otherwise TSO will not work. The fix can
+be found on `the dpdk.org net-next tree`__.
+__ http://git.dpdk.org/next/dpdk-next-net/commit/?id=e975e3720ba16278c6b43f8938b75710573bbd6a
+This fix is expected to be included in the 19.11.1 release. When OVS migrates
+to this DPDK release, this limitation can be removed.
+Performance Tuning
+iperf is often used to test TSO performance. Care needs to be taken when
+configuring the environment in which the iperf server process is being run.
+Since the iperf server uses the NIC's kernel driver, IRQs will be generated.
+By default with some NICs eg. i40e, the IRQs will land on the same core as that
+which is being used by the server process, provided the number of NIC queues is
+greater or equal to that lcoreid. This causes contention between the iperf
+server process and the IRQs. For optimal performance, it is suggested to pin
+the IRQs to their own core. To change the affinity associated with a given IRQ
+number, you can 'echo' the desired coremask to the file
+For more on SMP affinity, refer to the `Linux kernel documentation`__.
+__ https://www.kernel.org/doc/Documentation/IRQ-affinity.txt

More information about the dev mailing list