[ovs-dev] [PATCH] Use batch process recv for tap and raw socket in netdev datapath
William Tu
u9012063 at gmail.com
Sat Dec 21 00:58:59 UTC 2019
On Wed, Dec 18, 2019 at 10:44:21AM +0800, yang_y_yi wrote:
> Hi, William
>
>
> I used OVS DPDK to test it, you shouldn't add tap interface to ovs DPDK bridge if you use vdev to add tap, virtio_user is just for it, but that won't use this receive function to receive packets.
Right.
I mean if you already use OVS-DPDK, you can create tap device using s.t like
ovs-vsctl -- set interface dpdk-p0 type=dpdk \
options:dpdk-devargs=vdev:net_af_packet0,iface=dpdk-p0
Then you can get better veth performance around 2.3Gbps, without your patch.
William
>
> At 2019-12-17 02:55:50, "William Tu" <u9012063 at gmail.com> wrote:
> >On Fri, Dec 06, 2019 at 02:09:24AM -0500, 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.
> >>
> >> Signed-off-by: Yi Yang <yangyi01 at inspur.com>
> >
> >Hi Yi Yang,
> >
> >Are you testing this using OVS-DPDK?
> >If you're using OVS-DPDK, then you should use DPDK's vdev to
> >open and attach tap/veth device to OVS. I think you'll see much
> >better performance.
> >
> >The performance issue you pointed out only happens when using
> >userspace datapath without DPDK library, where afxdp is used.
> >I'm still looking for a better solutions for faster interface
> >for veth (af_packet) and tap.
> >
> >Thanks
> >William
More information about the dev
mailing list