On 07.11.2019 13:39, Eelco Chaudron wrote:


On 7 Nov 2019, at 12:36, Ilya Maximets wrote:

Until now there was only two options for XDP mode in OVS: SKB or DRV.
i.e. 'generic XDP' or 'native XDP with zero-copy enabled'.

Devices like 'veth' interfaces in Linux supports native XDP, but
doesn't support zero-copy mode.  This case can not be covered by
existing API and we have to use slower generic XDP for such devices.
There are few more issues, e.g. TCP is not supported in generic XDP
mode for veth interfaces due to kernel limitations, however it is
supported in native mode.

This change introduces ability to use native XDP without zero-copy
along with best-effort configuration option that enabled by default.
In best-effort case OVS will sequentially try different modes starting
from the fastest one and will choose the first acceptable for current
interface.  This will guarantee the best possible performance.

If user will want to choose specific mode, it's still possible by
setting the 'options:xdp-mode'.

This change additionally changes the API by renaming the configuration
knob from 'xdpmode' to 'xdp-mode' and also renaming the modes
themselves to be more user-friendly.

The full list of currently supported modes:
  * native-with-zerocopy - former DRV
  * native               - new one, DRV without zero-copy
  * generic              - former SKB
  * best-effort          - new one, chooses the best available from
                           3 above modes

Since 'best-effort' is a default mode, users will not need to
explicitely set 'xdp-mode' in most cases.

TCP related tests enabled back in system afxdp testsuite, because
'best-effort' will choose 'native' mode for veth interfaces
and this mode has no issues with TCP.

Signed-off-by: Ilya Maximets <i.maxim...@ovn.org>

No review, I was running some performance tests for the OVS conference 
presentation so quickly tried this patch (assuming performance would increase 
:)…

So with the native option (default for tap) I see a decrease, :(,  in 
performance over the skb mode (this is with my usual ovs_perf PVP test setup).

With the patch applied, and default configuration 
(xdp-mode-in-use=native-with-zerocopy for my tap):

Hmm. tap supports zero-copy? Interesting.
Have you tried forcing 'native' mode without zero-copy?
Maybe it will make sense to enable/disable need-wakeup feature.


"Physical to Virtual to Physical test, L3 flows[port redirect]"
,                 Packet size
Number of flows,  64
    1,             711581
  100,             673152
1000,             617733

Here you will even see a performance drop with multiple IP flows (this is a 
single queue config).

This is strange..


With SKB mode (xdp-mode-in-use=generic):

I'm curious, does TCP work via tap interfaces in generic mode?


"Physical to Virtual to Physical test, L3 flows[port redirect]"
,                 Packet size
Number of flows,  64
    1,             800796
  100,             800912
1000,             800133

Cheers,

Eelco

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to