[ovs-dev] [PATCH v2] netdev-afxdp: Best-effort configuration of XDP mode.
Eelco Chaudron
echaudro at redhat.com
Thu Nov 7 13:28:18 UTC 2019
On 7 Nov 2019, at 14:21, Ilya Maximets wrote:
> 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.
Oops, wrong cut/paste: xdp-mode-in-use=native
All my the tests where with use-need-wakeup=true
port 2: tapVM (afxdp: n_rxq=1, use-need-wakeup=true,
xdp-mode=best-effort, xdp-mode-in-use=native)
>
>>
>> "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