Go to file
Jianfeng Tan 56c9ff8e3e examples/vhost: fix performance
We find significant perfermance drop introduced by below commit,
when vhost example is started with --mergeable 0 and inside vm,
kernel virtio-net driver is used to do ip based forwarding.

The commit, 859b480d5a ("vhost: add guest offload setting"), adds
support for VIRTIO_NET_F_GUEST_TSO4 and VIRTIO_NET_F_GUEST_TSO6,
in vhost lib. But inside vhost example, the way to disable tso only
excludes the direction from virtio to vhost, but not the opposite
direction. When mergeable is disabled, it triggers big_packets path
of virtio-net driver to prepare to receive possible big packets with
size of 64K. Because mergeable is off, for each entry of avail ring,
virtio driver uses 19 desc chained together, with one desc pointing
to header, other 18 desc pointing to 4K-sized pages. But QEMU only
creates 256 desc entries for each vq, which results in that only 13
packets can be received. VM kernel can quickly handle those packets
and go to sleep (HLT).

As QEMU has no option to set the desc entries of a vq, so here,
we disable VIRTIO_NET_F_GUEST_TSO4 and VIRTIO_NET_F_GUEST_TSO6
with VIRTIO_NET_F_HOST_TSO4 and VIRTIO_NET_F_HOST_TSO6 when we
disable tso of vhost example, to avoid VM kernel virtio driver
go into big_packets path.

Fixes: 9fd72e3cbd ("examples/vhost: add virtio offload")

Reported-by: Qian Xu <qian.q.xu@intel.com>
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Tested-by: Qian Xu <qian.q.xu@intel.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
2016-07-22 12:40:26 +02:00
app app/test: increase memory allocated for greedy autotests 2016-07-21 23:59:26 +02:00
buildtools pmdinfogen: fix build on FreeBSD 2016-07-10 14:51:09 +02:00
config net/virtio-user: fix missing default config value 2016-07-04 04:08:41 +02:00
doc net/virtio-user: fix inconsistent name 2016-07-22 11:53:32 +02:00
drivers net/virtio-user: fix inconsistent name 2016-07-22 11:53:32 +02:00
examples examples/vhost: fix performance 2016-07-22 12:40:26 +02:00
lib cryptodev: fix memory leak in parameter parsing 2016-07-22 11:53:32 +02:00
mk mk: fix FreeBSD build 2016-07-21 10:26:12 +02:00
pkg version: 16.04 2016-04-11 23:56:34 +02:00
scripts scripts: remove old build option 2016-07-15 16:08:25 +02:00
tools tools: fix pmdinfo for FreeBSD 2016-07-10 14:51:09 +02:00
.gitignore init DPDK repository 2013-03-07 10:57:42 +01:00
GNUmakefile pmdinfogen: add buildtools and pmdinfogen utility 2016-07-06 22:34:39 +02:00
LICENSE.GPL doc: GPL/LGPL licenses 2013-07-25 14:43:06 +02:00
LICENSE.LGPL doc: fix file format (dos to unix) 2013-09-06 11:43:07 +02:00
MAINTAINERS maintainers: claim responsibility for KNI 2016-07-16 16:46:10 +02:00
Makefile remove trailing whitespaces 2014-06-11 00:29:34 +02:00
README doc: add readme file 2015-12-13 22:06:58 +01:00

DPDK is a set of libraries and drivers for fast packet processing.
It supports many processor architectures and both FreeBSD and Linux.

The DPDK uses the Open Source BSD license for the core libraries and
drivers. The kernel components are GPLv2 licensed.

Please check the doc directory for release notes,
API documentation, and sample application information.

For questions and usage discussions, subscribe to: users@dpdk.org
Report bugs and issues to the development mailing list: dev@dpdk.org