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

William Tu u9012063 at gmail.com
Thu Sep 5 21:31:20 UTC 2019


On Wed, Sep 4, 2019 at 7:10 AM Ilya Maximets <i.maximets at samsung.com> wrote:
>
> > 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.
>
Cool.
If there is a kthread polling the SKB mode tx queue, then need_wakeup feature
can be enabled for virtual device. This will save sendto syscall overhead and
improve performance.

William


More information about the dev mailing list