Message ID | 20211007220013.355530-1-maxime.coquelin@redhat.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 6A4CFA0C43; Fri, 8 Oct 2021 00:13:25 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E3A66411FE; Fri, 8 Oct 2021 00:13:24 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 5A14A4116F for <dev@dpdk.org>; Fri, 8 Oct 2021 00:13:23 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1633644802; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4DvfeZqlQZq3PIZYBwj5b2omGrvXxtamABasPeTZY8E=; b=GVuQlM6C1enuOI9aOcbsTpWcJb51RRczvNDqDArfmJxxVHUvZr72jVtQkeodTXiYk5mhCn sLSFT7k+o/CJKKqLkxJryv4fXVx+Ob1mjKD4Eu+EpQGOBzlibcmPKo29W1rNeKKExVQlL7 x2U80ePi5tOJFutmf6+nYVIi35/jEJ0= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-304-7cHW6xRfOzS8jCf5Fanesw-1; Thu, 07 Oct 2021 18:13:16 -0400 X-MC-Unique: 7cHW6xRfOzS8jCf5Fanesw-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4F175155DB9; Thu, 7 Oct 2021 22:00:18 +0000 (UTC) Received: from max-t490s.redhat.com (unknown [10.39.208.18]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7AC145C1A3; Thu, 7 Oct 2021 22:00:16 +0000 (UTC) From: Maxime Coquelin <maxime.coquelin@redhat.com> To: dev@dpdk.org, chenbo.xia@intel.com, jiayu.hu@intel.com, yuanx.wang@intel.com, wenwux.ma@intel.com, bruce.richardson@intel.com, john.mcnamara@intel.com Cc: Maxime Coquelin <maxime.coquelin@redhat.com> Date: Thu, 7 Oct 2021 23:59:59 +0200 Message-Id: <20211007220013.355530-1-maxime.coquelin@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=maxime.coquelin@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" Subject: [dpdk-dev] [RFC 00/14] vhost: clean-up and simplify async implementation 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 Sender: "dev" <dev-bounces@dpdk.org> |
Series |
vhost: clean-up and simplify async implementation
|
|
Message
Maxime Coquelin
Oct. 7, 2021, 9:59 p.m. UTC
This series aims at cleaning and simplifying the async enqueue path. I think it makes the code easier to understand, and is necessary before integrating new changes. I may have more reworks to propose in next revisions, but I wanted to share my current status early so that you have time to review/test it. It is only compile-tested, as I don't have HW with IOAT support to test it. Maxime Coquelin (14): vhost: move async data in a dedicated structure vhost: hide inflight async structure vhost: simplify async IO vectors vhost: simplify async IO vectors iterators vhost: remove async batch threshold vhost: introduce specific iovec structure vhost: remove useless fields in async iterator struct vhost: improve IO vector logic vhost: remove notion of async descriptor vhost: simplify async enqueue completion vhost: simplify getting the first in-flight index vhost: prepare async for mbuf to desc refactoring vhost: prepare sync for mbuf to desc refactoring vhost: merge sync and async mbuf to desc filling examples/vhost/ioat.c | 30 +- examples/vhost/ioat.h | 2 +- lib/vhost/rte_vhost_async.h | 42 +-- lib/vhost/vhost.c | 129 +++---- lib/vhost/vhost.h | 67 ++-- lib/vhost/vhost_user.c | 4 +- lib/vhost/virtio_net.c | 697 ++++++++++++++---------------------- 7 files changed, 379 insertions(+), 592 deletions(-)
Comments
On Fri, Oct 8, 2021 at 12:13 AM Maxime Coquelin <maxime.coquelin@redhat.com> wrote: > > This series aims at cleaning and simplifying the async > enqueue path. I think it makes the code easier to > understand, and is necessary before integrating new > changes. > > I may have more reworks to propose in next revisions, There is some consolidation that could be done in split/packed sync/async rx helpers too. Is this what you have in mind? > but I wanted to share my current status early so that > you have time to review/test it. > > It is only compile-tested, as I don't have HW with IOAT > support to test it. > > Maxime Coquelin (14): > vhost: move async data in a dedicated structure > vhost: hide inflight async structure > vhost: simplify async IO vectors > vhost: simplify async IO vectors iterators > vhost: remove async batch threshold > vhost: introduce specific iovec structure > vhost: remove useless fields in async iterator struct > vhost: improve IO vector logic > vhost: remove notion of async descriptor > vhost: simplify async enqueue completion > vhost: simplify getting the first in-flight index > vhost: prepare async for mbuf to desc refactoring > vhost: prepare sync for mbuf to desc refactoring > vhost: merge sync and async mbuf to desc filling > > examples/vhost/ioat.c | 30 +- > examples/vhost/ioat.h | 2 +- > lib/vhost/rte_vhost_async.h | 42 +-- > lib/vhost/vhost.c | 129 +++---- > lib/vhost/vhost.h | 67 ++-- > lib/vhost/vhost_user.c | 4 +- > lib/vhost/virtio_net.c | 697 ++++++++++++++---------------------- > 7 files changed, 379 insertions(+), 592 deletions(-) Just had a quick look. Nice to shrink vq memory footprint again. And less code is always better. +1 from me.
Hi Maxime, > -----Original Message----- > From: Maxime Coquelin <maxime.coquelin@redhat.com> > Sent: Friday, October 8, 2021 6:00 AM > To: dev@dpdk.org; Xia, Chenbo <chenbo.xia@intel.com>; Hu, Jiayu > <jiayu.hu@intel.com>; Wang, YuanX <yuanx.wang@intel.com>; Ma, > WenwuX <wenwux.ma@intel.com>; Richardson, Bruce > <bruce.richardson@intel.com>; Mcnamara, John > <john.mcnamara@intel.com> > Cc: Maxime Coquelin <maxime.coquelin@redhat.com> > Subject: [RFC 00/14] vhost: clean-up and simplify async implementation > > This series aims at cleaning and simplifying the async enqueue path. I think it > makes the code easier to understand, and is necessary before integrating > new changes. I really appreciate those changes, and the code looks better, especially for improving io vector logic, as the existed implementation has a potential risk of OOB reads/writes. About the fifth patch, removing async batch threshold, this change is OK for me, as current vhost is packet level offloading and buffer level DMA batching copy will be done inside the DMA callback, so no need to keep the batching threshold. But when integrate DMA logic inside vhost, the async data path still needs to handle buffer level batching, and some of deleted code may need to be recovered. Thanks, Jiayu > > I may have more reworks to propose in next revisions, but I wanted to share > my current status early so that you have time to review/test it. > > It is only compile-tested, as I don't have HW with IOAT support to test it. > > Maxime Coquelin (14): > vhost: move async data in a dedicated structure > vhost: hide inflight async structure > vhost: simplify async IO vectors > vhost: simplify async IO vectors iterators > vhost: remove async batch threshold > vhost: introduce specific iovec structure > vhost: remove useless fields in async iterator struct > vhost: improve IO vector logic > vhost: remove notion of async descriptor > vhost: simplify async enqueue completion > vhost: simplify getting the first in-flight index > vhost: prepare async for mbuf to desc refactoring > vhost: prepare sync for mbuf to desc refactoring > vhost: merge sync and async mbuf to desc filling > > examples/vhost/ioat.c | 30 +- > examples/vhost/ioat.h | 2 +- > lib/vhost/rte_vhost_async.h | 42 +-- > lib/vhost/vhost.c | 129 +++---- > lib/vhost/vhost.h | 67 ++-- > lib/vhost/vhost_user.c | 4 +- > lib/vhost/virtio_net.c | 697 ++++++++++++++---------------------- > 7 files changed, 379 insertions(+), 592 deletions(-) > > -- > 2.31.1