[dpdk-dev] [PATCH] vhost: add back support for concurrent enqueue

Yuanhan Liu yuanhan.liu at linux.intel.com
Sun Sep 11 14:18:07 CEST 2016


On Mon, Aug 15, 2016 at 01:00:24PM -0700, Rich Lane wrote:
> Concurrent enqueue is an important performance optimization when the number
> of cores used for switching is different than the number of vhost queues.
> I've observed a 20% performance improvement compared to a strategy that
> binds queues to cores.
> 
> The atomic cmpset is only executed when the application calls
> rte_vhost_enqueue_burst_mp. Benchmarks show no performance impact
> when not using concurrent enqueue.
> 
> Mergeable RX buffers aren't supported by concurrent enqueue to minimize
> code complexity.
> 
> Partially reverts 39449e74 ("vhost: remove concurrent enqueue") and
> includes a fix from "vhost: avoid reordering of used->idx and last_used_idx
> updating".
> 
> Signed-off-by: Rich Lane <rich.lane at bigswitch.com>
> ---
>  lib/librte_vhost/rte_vhost_version.map |  6 +++
>  lib/librte_vhost/rte_virtio_net.h      | 19 +++++++++
>  lib/librte_vhost/vhost-net.h           |  2 +
>  lib/librte_vhost/vhost_rxtx.c          | 77 ++++++++++++++++++++++++++++++----
>  lib/librte_vhost/virtio-net.c          |  2 +
>  5 files changed, 97 insertions(+), 9 deletions(-)
> 
> diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map
> index 5ceaa8a..ca9d49e 100644
> --- a/lib/librte_vhost/rte_vhost_version.map
> +++ b/lib/librte_vhost/rte_vhost_version.map
> @@ -30,3 +30,9 @@ DPDK_16.07 {
>  	rte_vhost_get_queue_num;
>  
>  } DPDK_2.1;
> +
> +DPDK_16.11 {
> +	global:
> +
> +	rte_vhost_enqueue_burst_mp
> +} DPDK_16.07;

Hi,

FYI, my testrobot caught some errors when this patch is applied.

        --yliu

---
x86_64-native-linuxapp-clang: config-all-yes-shared
===================================================
/usr/bin/ld:/root/dpdk/lib/librte_vhost/rte_vhost_version.map:38: syntax error in VERSION script
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[5]: *** [librte_vhost.so.3.1] Error 1
make[4]: *** [librte_vhost] Error 2
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [lib] Error 2
make[2]: *** [all] Error 2
make[1]: *** [pre_install] Error 2
make: *** [install] Error 2
error: build failed


More information about the dev mailing list