[dpdk-dev] [PATCH v3 0/7] vhost: add dequeue zero copy support

Yuanhan Liu yuanhan.liu at linux.intel.com
Wed Oct 12 09:48:20 CEST 2016


On Sun, Oct 09, 2016 at 03:27:53PM +0800, Yuanhan Liu wrote:
> This patch set enables vhost dequeue zero copy. The majority work goes
> to patch 4: "vhost: add dequeue zero copy".

Applied to dpdk-next-virtio.

	--yliu
> 
> The basic idea of dequeue zero copy is, instead of copying data from the
> desc buf, here we let the mbuf reference the desc buf addr directly.
> 
> The major issue behind that is how and when to update the used ring.
> You could check the commit log of patch 4 for more details.
> 
> Patch 5 introduces a new flag, RTE_VHOST_USER_DEQUEUE_ZERO_COPY, to enable
> dequeue zero copy, which is disabled by default.
> 
> The performance gain is quite impressive. For a simple dequeue workload
> (running rxonly in vhost-pmd and runnin txonly in guest testpmd), it yields
> 50+% performance boost for packet size 1500B. For VM2VM iperf test case,
> it's even better: about 70% boost.
> 
> For small packets, the performance is worse (it's expected, as the extra
> overhead introduced by zero copy outweighs the benefits from saving few
> bytes copy).
> 
> v3: - rebase: mainly for removing conflicts with the Tx indirect patch
>     - don't update last_used_idx twice for zero-copy mode
>     - handle two mssiing "Tx -> dequeue" renames in log and usage
> 
> v2: - renamed "tx zero copy" to "dequeue zero copy", to reduce confusions.
>     - hnadle the case that a desc buf might across 2 host phys pages
>     - use MAP_POPULATE to let kernel populate the page tables
>     - updated release note
>     - doc-ed the limitations for the vm2nic case
>     - merge 2 continuous guest phys memory region
>     - and few more trivial changes, please see them in the corresponding
>       patches
> 
> ---
> Yuanhan Liu (7):
>   vhost: simplify memory regions handling
>   vhost: get guest/host physical address mappings
>   vhost: introduce last avail idx for dequeue
>   vhost: add dequeue zero copy
>   vhost: add a flag to enable dequeue zero copy
>   examples/vhost: add an option to enable dequeue zero copy
>   net/vhost: add an option to enable dequeue zero copy
> 
>  doc/guides/prog_guide/vhost_lib.rst    |  35 +++-
>  doc/guides/rel_notes/release_16_11.rst |  13 ++
>  drivers/net/vhost/rte_eth_vhost.c      |  13 ++
>  examples/vhost/main.c                  |  19 +-
>  lib/librte_vhost/rte_virtio_net.h      |   1 +
>  lib/librte_vhost/socket.c              |   5 +
>  lib/librte_vhost/vhost.c               |  12 ++
>  lib/librte_vhost/vhost.h               | 102 ++++++++---
>  lib/librte_vhost/vhost_user.c          | 315 ++++++++++++++++++++++-----------
>  lib/librte_vhost/virtio_net.c          | 196 +++++++++++++++++---
>  10 files changed, 549 insertions(+), 162 deletions(-)
> 
> -- 
> 1.9.0


More information about the dev mailing list