[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