[ovs-dev] [PATCH v2] netdev-afxdp: Best-effort configuration of XDP mode.

Ilya Maximets i.maximets at ovn.org
Thu Nov 7 13:21:55 UTC 2019


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.maximets at 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
> 


More information about the dev mailing list