[ovs-dev] [PATCH] Use batch process recv for tap and raw socket in netdev datapath

William Tu u9012063 at gmail.com
Sat Dec 7 04:19:12 UTC 2019


On Thu, Dec 5, 2019 at 11:09 PM <yang_y_yi at 163.com> wrote:
>
> From: Yi Yang <yangyi01 at inspur.com>
>
> Current netdev_linux_rxq_recv_tap and netdev_linux_rxq_recv_sock
> just receive single packet, that is very inefficient, per my test
> case which adds two tap ports or veth ports into OVS bridge
> (datapath_type=netdev) and use iperf3 to do performance test
> between two ports (they are set into different network name space).
>
> The result is as below:
>
>   tap:  295 Mbits/sec
>   veth: 207 Mbits/sec
>
> After I change netdev_linux_rxq_recv_tap and
> netdev_linux_rxq_recv_sock to use batch process, the performance
> is boosted by about 7 times, here is the result:
>
>   tap:  1.96 Gbits/sec
>   veth: 1.47 Gbits/sec
>
> Undoubtedly this is a huge improvement although it can't match
> OVS kernel datapath yet.
>
> FYI: here is thr result for OVS kernel datapath:
>
>   tap:  37.2 Gbits/sec
>   veth: 36.3 Gbits/sec
>
> Note: performance result is highly related with your test machine
> , you shouldn't expect the same results on your test machine.

Hi Yi Yang,

Thanks for the patch, it's amazing with so much performance improvement.
I haven't reviewed the code but Yifeng and I applied and tested this patch.
Using netdev-afxdp + tap port, we do see performance improves from
300Mbps to 2Gbps in our testbed!

Will add more feedback next week.
William


More information about the dev mailing list