This patch enables optional dequeue zero copy for vHost ports. This gives a performance increase for some use cases. I'm using the cover letter to report my results.
vhost (vm1) -> vhost (vm2) Using testpmd to source (txonly) in vm1 and sink (rxonly) in vm2. 4C1Q 64B packets: 5.05Mpps -> 5.52Mpps = 9.2% improvement 256B: 4.69 vs 5.42 Mpps (+~16%) 512B: 4.04 vs 4.90 Mpps (+~21%) 1518B: 2.51 vs 3.05 Mpps (+~22%) vhost (virtio_user backend 1) -> vhost (virtio_user backend 2) Using 2 instances of testpmd, each with a virtio_user backend connected to one of the two vhost ports created in OVS. 2C1Q 1518B packets: 2.59Mpps -> 3.09Mpps = 19.3% improvement vhost -> phy Using testpmd to source (txonly) and sink in the NIC 1C1Q 64B packets: 6.81Mpps -> 7.76Mpps = 13.9% improvement phy -> vhost -> phy No improvement measured RFC2544 PVP: Ã NIC-TXD Virtio-TXD ZC Mpps 2048 256 off 2.105 128 256 off 2.162 2048 1024 off 2.455 128 256 on 1.587 512 1024 on 0.321 This feature is experimental and currently requires QEMU < v2.7 until the following fix in merged into a DPDK release supported by OVS: http://dpdk.org/dev/patchwork/patch/32198/ v6: * Note the feature is experimental. * Mention bug in DPDK & temporary requirement on QEMU < v2.7 v5: * Rebase to 17.11 patch * Update docs with warning of potential packet loss * Update docs with info on NIC & Virtio descriptor values and working combinations v4: * Rebase v3: * Documentation updates: ** Style fixes ** Elaborate on expected logs ** Describe how to disable the feature ** Describe NIC descriptors limitation in more detail v2 changes: * Mention feature is disabled by default in the documentation * Add PHY-VM-PHY with vHost dequeue zero copy documentation guide * Line wrap link to DPDK documentation * Rename zc_enabled to dq_zc_enabled for future-proofing * Mention feature is available for both vHost port types in the docs * In practise, rebooting the VM doesn't always enable the feature if enabled post-boot, so update the documentation to suggest a shutdown rather than a reboot. The reason why this doesn't work is probably because the total downtime during reboot isn't enough to allow a vhost device unregister & re-register with the new feature, so when the VM starts again it doesn't pick up the new device as it hasn't been re-registered in time. Ciara Loftus (2): netdev-dpdk: Helper function for vHost device setup netdev-dpdk: Enable optional dequeue zero copy for vHost User Documentation/howto/dpdk.rst | 33 +++++ Documentation/topics/dpdk/vhost-user.rst | 68 ++++++++++ NEWS | 2 + lib/netdev-dpdk.c | 211 +++++++++++++++++++++---------- vswitchd/vswitch.xml | 11 ++ 5 files changed, 258 insertions(+), 67 deletions(-) -- 2.7.5
_______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev