[RFC,v2,0/2] vhost: support async dequeue data path
Message ID | 20220224110400.44670-1-xuan.ding@intel.com (mailing list archive) |
---|---|
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A9A77A0353; Thu, 24 Feb 2022 03:25:10 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 72C7340DF6; Thu, 24 Feb 2022 03:25:10 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 707E840696 for <dev@dpdk.org>; Thu, 24 Feb 2022 03:25:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1645669508; x=1677205508; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=gHqdgSBn6qEnDwzaFe9cxemFv0UsisRpjEISqWKsHKQ=; b=bvJg+USgIFhLmCuCFi7HJ7NpuyXon8XTpO6FmbroBA8PVupvPuWj768V FpiDcIIiA0VR1GN6Nmz8CJO/9uGlh+YKQme0iu+2iPpPvYF98csR/A3gD ORkY+dLHgBuPg2RpqrF3qVK25tJdkq+7UJYth30eWbYsRFHWIrxFt1XT6 +CpFBrB84oMmxqIp/jUOWPrfGQdfd+YlB4dBh+O+jAuSpbm7JLKYsD4Av dhkXh8u12Jd5uSzh+DsxxfHSwS3n1E9fjhw9UJCm2Eb2qUYCvgfQ8H6Zu oBJtcb2zjBQvAavyLSM2gYDapGDmpOGot74z05JqcbqVl8aSIChwzWc+e Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10267"; a="276756829" X-IronPort-AV: E=Sophos;i="5.88,392,1635231600"; d="scan'208";a="276756829" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Feb 2022 18:25:07 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,392,1635231600"; d="scan'208";a="491433836" Received: from npg-dpdk-xuan-cbdma.sh.intel.com ([10.67.110.228]) by orsmga003.jf.intel.com with ESMTP; 23 Feb 2022 18:25:05 -0800 From: xuan.ding@intel.com To: maxime.coquelin@redhat.com, chenbo.xia@intel.com Cc: dev@dpdk.org, jiayu.hu@intel.com, cheng1.jiang@intel.com, sunil.pai.g@intel.com, liangma@liangbit.com, Xuan Ding <xuan.ding@intel.com> Subject: [RFC,v2 0/2] vhost: support async dequeue data path Date: Thu, 24 Feb 2022 11:03:58 +0000 Message-Id: <20220224110400.44670-1-xuan.ding@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220101001244.90147-1-xuan.ding@intel.com> References: <20220101001244.90147-1-xuan.ding@intel.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://mails.dpdk.org/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <https://mails.dpdk.org/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org |
Message
Ding, Xuan
Feb. 24, 2022, 11:03 a.m. UTC
From: Xuan Ding <xuan.ding@intel.com>
The presence of an asynchronous path allows applications to offload
memory copies to DMA engine, so as to save CPU cycles and improve
the copy performance. This patch set is a draft implementation for
split ring in vhost async dequeue data path. The code is based on
latest enqueue changes [1].
This patch set is a new design and implementation of [2]. Since dmadev
was introduced in DPDK 21.11, to simplify application logics, this patch
integrates dmadev in vhost. With dmadev integrated, vhost supports M:N
mapping between vrings and DMA virtual channels. Specifically, one vring
can use multiple different DMA channels and one DMA channel can be
shared by multiple vrings at the same time.
A new asynchronous dequeue function is introduced:
1) rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id,
struct rte_mempool *mbuf_pool, struct rte_mbuf **pkts,
uint16_t count, int *nr_inflight,
uint16_t dma_id, uint16_t vchan_id)
Receive packets from the guest and offloads copies to DMA
virtual channel.
[1] https://mails.dpdk.org/archives/dev/2022-February/234555.html
[2] https://mails.dpdk.org/archives/dev/2021-September/218591.html
RFC v1 -> v2:
* fix one bug in example
* rename vchan to vchan_id
* check if dma_id and vchan_id valid
* rework all the logs to new standard
Xuan Ding (2):
vhost: support async dequeue for split ring
examples/vhost: support async dequeue data path
doc/guides/sample_app_ug/vhost.rst | 9 +-
examples/vhost/main.c | 292 +++++++++++------
examples/vhost/main.h | 35 +-
examples/vhost/virtio_net.c | 16 +-
lib/vhost/rte_vhost_async.h | 33 ++
lib/vhost/version.map | 1 +
lib/vhost/vhost.h | 1 +
lib/vhost/virtio_net.c | 504 +++++++++++++++++++++++++++++
8 files changed, 793 insertions(+), 98 deletions(-)