[ovs-build] Passed: williamtu/ovs-travis#293 (need_wakeup_v6 - 064d5ab)

Travis CI builds at travis-ci.org
Wed Oct 23 21:00:26 UTC 2019


Build Update for williamtu/ovs-travis
-------------------------------------

Build: #293
Status: Passed

Duration: 1 hr, 2 mins, and 45 secs
Commit: 064d5ab (need_wakeup_v6)
Author: William Tu
Message: netdev-afxdp: Add need_wakeup supprt.

The patch adds support for using need_wakeup flag in AF_XDP rings.
A new option, use_need_wakeup, is added.  When this option 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 sendto syscalls for TX.
For RX, instead of kernel always busy-spinning on fille queue, OVS wakes
up the kernel RX processing when fill queue is replenished.

The need_wakeup feature is merged into Linux kernel bpf-next tee with commit
77cd0d7b3f25 ("xsk: add support for need_wakeup flag in AF_XDP rings") and
OVS enables it by default, if libbpf supports it.  If users enable it but
runs in an older version of libbpf, then the need_wakeup feature has no effect,
and a warning message is logged.

For virtual interface, it's better set use_need_wakeup=false, since
the virtual device's AF_XDP xmit is synchronous: the sendto syscall
enters kernel and process the TX packet on tx queue directly.

On Intel Xeon E5-2620 v3 2.4GHz system, performance of physical port
to physical port improves from 6.1Mpps to 7.3Mpps.

Suggested-by: Ilya Maximets <i.maximets at ovn.org>
Signed-off-by: William Tu <u9012063 at gmail.com>
---
v6:
- address feedback from Ilay
  - change default to true only when libbpf supports it.
  - update afxdp docs and commit message.
  - Tested-at: https://travis-ci.org/williamtu/ovs-travis/builds/601958515

  - Performance using 1 pmd
     ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x40

  - Without need_wakeup, 6Mpps
     root at ovs-smartnic:~/ovs# ovs-appctl dpif-netdev/pmd-stats-show
     pmd thread numa_id 0 core_id 6:
       packets received: 68726373
       packet recirculations: 0
       avg. datapath passes per packet: 1.00
       emc hits: 68726213
       smc hits: 0
       megaflow hits: 159
       avg. subtable lookups per megaflow hit: 1.00
       miss with success upcall: 1
       miss with failed upcall: 0
       avg. packets per output batch: 31.84
       idle cycles: 10949448171 (29.21%)
       processing cycles: 26533605726 (70.79%)
       avg cycles per packet: 545.40 (37483053897/68726373)
       avg processing cycles per packet: 386.08 (26533605726/68726373)

  - With need_wakeup, 7.3Mpps
     root at ovs-smartnic:~/ovs# ovs-appctl dpif-netdev/pmd-stats-show
     pmd thread numa_id 0 core_id 6:
       packets received: 87960016
       packet recirculations: 0
       avg. datapath passes per packet: 1.00
       emc hits: 87959920
       smc hits: 0
       megaflow hits: 63
       avg. subtable lookups per megaflow hit: 1.00
       miss with success upcall: 1
       miss with failed upcall: 0
       avg. packets per output batch: 31.94
       idle cycles: 11821505245 (30.87%)
       processing cycles: 26468478120 (69.13%)
       avg cycles per packet: 435.31 (38289983365/87960016)
       avg processing cycles per packet: 300.91 (26468478120/87960016)

v5:
- address feedback from Ilya
  - update commit msg about kernel version using bpf-next tree
  - remove __func__, and use DBG in log_
  - fix alignment
  - remove the kernel version requirement for need_wakeup, we can
    wait until tag is available

v4:
- move use_need_wakeup check inside xsk_rx_wakeup_if_needed

v3:
- add warning when user enables it but libbpf not support it
- revise documentation

v2:
- address feedbacks from Ilya and Eelco
- add options:use_need_wakeup, default to true
- remove poll timeout=1sec, make poll() return immediately
- naming change: rename to xsk_rx_wakeup_if_needing
- fix indents and return value for errno

View the changeset: https://github.com/williamtu/ovs-travis/compare/3fb974d03cf1...064d5ab35fb7

View the full build log and details: https://travis-ci.org/williamtu/ovs-travis/builds/601995462?utm_medium=notification&utm_source=email

--

You can unsubscribe from build emails from the williamtu/ovs-travis repository going to https://travis-ci.org/account/preferences/unsubscribe?repository=6871381&utm_medium=notification&utm_source=email.
Or unsubscribe from *all* email updating your settings at https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email.
Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-build/attachments/20191023/561871c9/attachment-0001.html>


More information about the build mailing list