[dpdk-dev] [PATCH v1 0/2] introduce asynchronous data path for vhost

Maxime Coquelin maxime.coquelin at redhat.com
Fri Jun 26 16:42:37 CEST 2020


Hi Patrick,

On 6/11/20 12:02 PM, patrick.fu at intel.com wrote:
> From: Patrick Fu <patrick.fu at intel.com>
> 
> Performing large memory copies usually takes up a major part of CPU
> cycles and becomes the hot spot in vhost-user enqueue operation. To
> offload expensive memory operations from the CPU, this patch set
> proposes to leverage DMA engines, e.g., I/OAT, a DMA engine in the
> Intel's processor, to accelerate large copies.
> 
> Large copies are offloaded from the CPU to the DMA in an asynchronous
> manner. The CPU just submits copy jobs to the DMA but without waiting
> for its copy completion. Thus, there is no CPU intervention during
> data transfer; we can save precious CPU cycles and improve the overall
> throughput for vhost-user based applications, like OVS. During packet
> transmission, it offloads large copies to the DMA and performs small
> copies by the CPU, due to startup overheads associated with the DMA.
> 
> This patch set construct a general framework that applications can
> leverage to attach DMA channels with vhost-user transmit queues. Four
> new RTE APIs are introduced to vhost library for applications to
> register and use the asynchronous data path. In addition, two new DMA
> operation callbacks are defined, by which vhost-user asynchronous data
> path can interact with DMA hardware. Currently only enqueue operation
> for split queue is implemented, but the frame is flexible to extend
> support for dequeue & packed queue.


Thanks for this big rework of the Vhost DMA series.
It looks overall good to me and is consistent with what design you
suggested few months back.

I don't see a big risk to integrate it in v20.08 once the few comments
are taken into account.

I'll try to make another pass before you send a v2.

Maxime

> Patrick Fu (2):
>   vhost: introduce async data path registration API
>   vhost: introduce async enqueue for split ring
> 
>  lib/librte_vhost/Makefile          |   3 +-
>  lib/librte_vhost/rte_vhost.h       |   1 +
>  lib/librte_vhost/rte_vhost_async.h | 172 ++++++++++++
>  lib/librte_vhost/socket.c          |  20 ++
>  lib/librte_vhost/vhost.c           |  74 ++++-
>  lib/librte_vhost/vhost.h           |  30 ++-
>  lib/librte_vhost/vhost_user.c      |  28 +-
>  lib/librte_vhost/virtio_net.c      | 538 ++++++++++++++++++++++++++++++++++++-
>  8 files changed, 857 insertions(+), 9 deletions(-)
>  create mode 100644 lib/librte_vhost/rte_vhost_async.h
> 



More information about the dev mailing list