[ovs-dev] [PATCHv5] netdev-afxdp: Add need_wakeup supprt.

William Tu u9012063 at gmail.com
Wed Oct 23 21:14:00 UTC 2019


On Wed, Oct 16, 2019 at 04:13:14PM +0000, Loftus, Ciara wrote:
> > 
> > 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. Running the feature before this version causes
> > xsk bind fails, please use options:use_need_wakeup=false to disable 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.
> 
> 
> Hi William,
> 
> Thanks for the patch. 
> I'm wondering if/how you've pinned the IRQs for the physical ports in the test above.
> Are the IRQs pinned to standalone cores or does the PMD thread share the same core?
> I'd be interested in seeing performance results for both, if you have them.
> 
> Thanks,
> Ciara

Hi Ciara,

I've sent out a new version for more performance detail.

For IRQs, I didn't pinned IRQ to any perticular core.
I setup to use core 6 for PMD thread, I can see my softirqd/4 using 100%cpu,
and interrupt is spread through different cores (but mostly at CPU9 and CPU10,
from /proc/interrupts.

Thanks
William


More information about the dev mailing list