From: Jiayu Hu <jiayu.hu@intel.com>
To: dev@dpdk.org
Cc: maxime.coquelin@redhat.com, xiaolong.ye@intel.com,
zhihong.wang@intel.com, Jiayu Hu <jiayu.hu@intel.com>
Subject: [dpdk-dev] [PATCH 0/4] Support DMA-accelerated Tx operations for vhost-user PMD
Date: Tue, 17 Mar 2020 05:21:21 -0400 [thread overview]
Message-ID: <1584436885-18651-1-git-send-email-jiayu.hu@intel.com> (raw)
In vhost-user PMD's Tx operations, where data movement is heavily involved,
performing large memory copies usually takes up a major part of CPU cycles
and becomes the hot spot. 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 for vhost-user.
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 PMD 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.
vhost-user PMD is able to support various DMA engines, but it just
supports I/OAT devices currently. In addition, I/OAT acceleration is only
enabled for Tx operations of split rings. Users can explicitly assign a
I/OAT device to a queue by the parameter 'dmas'. However, one I/OAT device
can only be used by one queue, and a queue can use one I/OAT device at a
time.
We measure the performance in testpmd. With 1024 bytes packets, compared
with the original SW data path, DMA-enabled vhost-user PMD can improve
the throughput around 20%~30% in the VM2VM and PVP cases. Furthermore,
with larger packets, the throughput improvement will be higher.
Jiayu Hu (4):
vhost: populate guest memory for DMA-accelerated vhost-user
net/vhost: setup vrings for DMA-accelerated datapath
net/vhost: leverage DMA engines to accelerate Tx operations
doc: add I/OAT acceleration support for vhost-user PMD
doc/guides/nics/vhost.rst | 14 +
drivers/Makefile | 2 +-
drivers/net/vhost/Makefile | 6 +-
drivers/net/vhost/internal.h | 160 +++++++
drivers/net/vhost/meson.build | 5 +-
drivers/net/vhost/rte_eth_vhost.c | 308 +++++++++++---
drivers/net/vhost/virtio_net.c | 861 ++++++++++++++++++++++++++++++++++++++
drivers/net/vhost/virtio_net.h | 288 +++++++++++++
lib/librte_vhost/rte_vhost.h | 1 +
lib/librte_vhost/socket.c | 20 +
lib/librte_vhost/vhost.h | 2 +
lib/librte_vhost/vhost_user.c | 3 +-
12 files changed, 1597 insertions(+), 73 deletions(-)
create mode 100644 drivers/net/vhost/internal.h
create mode 100644 drivers/net/vhost/virtio_net.c
create mode 100644 drivers/net/vhost/virtio_net.h
--
2.7.4
next reply other threads:[~2020-03-17 2:43 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-17 9:21 Jiayu Hu [this message]
2020-03-17 9:21 ` [dpdk-dev] [PATCH 1/4] vhost: populate guest memory for DMA-accelerated vhost-user Jiayu Hu
2020-03-17 9:21 ` [dpdk-dev] [PATCH 2/4] net/vhost: setup vrings for DMA-accelerated datapath Jiayu Hu
2020-03-17 6:29 ` Liu, Yong
2020-03-17 9:35 ` Hu, Jiayu
2020-03-18 1:17 ` Liu, Yong
2020-03-17 9:21 ` [dpdk-dev] [PATCH 3/4] net/vhost: leverage DMA engines to accelerate Tx operations Jiayu Hu
2020-03-17 7:21 ` Liu, Yong
2020-03-17 9:31 ` Hu, Jiayu
2020-03-18 1:22 ` Liu, Yong
2020-03-17 9:21 ` [dpdk-dev] [PATCH 4/4] doc: add I/OAT acceleration support for vhost-user PMD Jiayu Hu
2020-03-17 6:36 ` Ye Xiaolong
2020-03-17 9:53 ` [dpdk-dev] [PATCH 0/4] Support DMA-accelerated Tx operations " Maxime Coquelin
2020-03-19 7:33 ` Hu, Jiayu
2020-03-19 9:10 ` Maxime Coquelin
2020-03-19 11:47 ` Hu, Jiayu
2020-03-26 7:52 ` Maxime Coquelin
2020-03-26 8:25 ` Hu, Jiayu
2020-03-26 8:47 ` Maxime Coquelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1584436885-18651-1-git-send-email-jiayu.hu@intel.com \
--to=jiayu.hu@intel.com \
--cc=dev@dpdk.org \
--cc=maxime.coquelin@redhat.com \
--cc=xiaolong.ye@intel.com \
--cc=zhihong.wang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).