[ovs-dev] [PATCH 2/2] netdev-afxdp: Add need_wakeup supprt.

Ilya Maximets i.maximets at samsung.com
Wed Sep 4 14:10:03 UTC 2019


> Hi Eelco,
> 
> Thanks for your testing and review.
> 
> On Wed, Sep 4, 2019 at 1:04 AM Eelco Chaudron <echaudro at redhat.com> wrote:
>>
>>
>>
>> On 27 Aug 2019, at 1:02, William Tu wrote:
>>
>> > The patch adds support for using need_wakeup flag in AF_XDP rings.
>> > When this flag is used, it means that OVS has to explicitly wake
>> > up the kernel RX, using poll() syscall and wake up TX, using sendto()
>> > syscall. This feature improves the performance by avoiding unnecessary
>> > syscalls, so keeping more CPU time in userspace to process packets.
>> >
>> > On Intel Xeon E5-2620 v3 2.4GHz system, performance of physical port
>> > to physical port improves from 6.1Mpps to 7.3Mpps.
>>
>> Did some more testing and with PVP I see a performance decrease, with
>> physical to physical I see an increase.
>> Tests are performed with a port redirect open flow rule on an ixgbe
>> (Xeon E5-2690 v4 2.60GHz):
>>
>> +-----------+-----------------+---------+---------+---------+---------+---------+---------+--------+
>> |  PVP      | Number of flows |   64    |   128   |   256   |   512   |
>>   768   |   1024  |  1514  |
>> +-----------+-----------------+---------+---------+---------+---------+---------+---------+--------+
>> | master    |            1000 |  737896 |  700643 |  682915 |  648386 |
>> 621792 |  582821 | 527899 |
>> | Patch     |            1000 |  734179 |  696515 |  676712 |  646536 |
>> 619600 |  578546 | 519965 |
>> +-----------+-----------------+---------+---------+---------+---------+---------+---------+--------+
>>
>> +-----------+-----------------+---------+---------+---------+---------+---------+---------+--------+
>> | Port2Port | Number of flows |   64    |   128   |   256   |   512   |
>>   768   |  1024   |  1514  |
>> +-----------+-----------------+---------+---------+---------+---------+---------+---------+--------+
>> | master    |            1000 | 3351114 | 3236581 | 3143710 | 2349598 |
>> 1586276 | 1197304 | 814854 |
>> | Patch     |            1000 | 3571733 | 3488697 | 3448908 | 2349593 |
>> 1586276 | 1197304 | 814854 |
>> +-----------+-----------------+---------+---------+---------+---------+---------+---------+--------+
>>
>> Did not research why PVP is slower, maybe related to the TAP interface
>> with AF_XDP?
>>
> I haven't tried PVP with this feature.
> Maybe for virtual device, we don't need "need_wakeup" feature.
> Let me investigate more.

For virtual devices xmit is synchronous, so it always needs wakeup, i.e.
flag is always set.  In my spare time I'm working on kernel thread to
poll tx queue in SKB mode by the analogue with SQ_POLL in io_uring, but
I'm not sure if it will have good performance impact.

Best regards, Ilya Maximets.


More information about the dev mailing list