From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id D08BB2C07 for ; Tue, 23 Aug 2016 10:00:57 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP; 23 Aug 2016 01:00:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,565,1464678000"; d="scan'208";a="752353883" Received: from yliu-dev.sh.intel.com ([10.239.67.162]) by FMSMGA003.fm.intel.com with ESMTP; 23 Aug 2016 01:00:55 -0700 From: Yuanhan Liu To: dev@dpdk.org Cc: Maxime Coquelin , Yuanhan Liu Date: Tue, 23 Aug 2016 16:10:33 +0800 Message-Id: <1471939839-29778-1-git-send-email-yuanhan.liu@linux.intel.com> X-Mailer: git-send-email 1.9.0 Subject: [dpdk-dev] [PATCH 0/6] vhost: add Tx zero copy support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Aug 2016 08:00:58 -0000 This patch set enables vhost Tx zero copy. The majority work goes to patch 4: vhost: add Tx zero copy. The basic idea of Tx zero copy is, instead of copying data from the desc buf, here we let the mbuf reference the desc buf addr directly. The major issue behind that is how and when to update the used ring. You could check the commit log of patch 4 for more details. Patch 5 introduces a new flag, RTE_VHOST_USER_TX_ZERO_COPY, to enable Tx zero copy, which is disabled by default. Few more TODOs are left, including handling a desc buf that is across two physical pages, updating release note, etc. Those will be fixed in later version. For now, here is a simple one that hopefully it shows the idea clearly. I did some quick tests, the performance gain is quite impressive. For a simple dequeue workload (running rxonly in vhost-pmd and runnin txonly in guest testpmd), it yields 40+% performance boost for packet size 1400B. For VM2VM iperf test case, it's even better: about 70% boost. --- Yuanhan Liu (6): vhost: simplify memory regions handling vhost: get guest/host physical address mappings vhost: introduce last avail idx for Tx vhost: add Tx zero copy vhost: add a flag to enable Tx zero copy examples/vhost: add an option to enable Tx zero copy doc/guides/prog_guide/vhost_lib.rst | 7 +- examples/vhost/main.c | 19 ++- lib/librte_vhost/rte_virtio_net.h | 1 + lib/librte_vhost/socket.c | 5 + lib/librte_vhost/vhost.c | 12 ++ lib/librte_vhost/vhost.h | 103 +++++++++---- lib/librte_vhost/vhost_user.c | 297 +++++++++++++++++++++++------------- lib/librte_vhost/virtio_net.c | 188 +++++++++++++++++++---- 8 files changed, 472 insertions(+), 160 deletions(-) -- 1.9.0