Go to file
Zhihong Wang e7ef688562 vhost: optimize cache access
This patch reorders the code to delay virtio header write to improve
cache access efficiency for cases where the mrg_rxbuf feature is turned
on. CPU pipeline stall cycles can be significantly reduced.

Virtio header write and mbuf data copy are all remote store operations
which takes a long time to finish. It's a good idea to put them together
to remove bubbles in between, to let as many remote store instructions
as possible go into store buffer at the same time to hide latency, and
to let the H/W prefetcher goes to work as early as possible.

On a Haswell machine, about 100 cycles can be saved per packet by this
patch alone. Taking 64B packets traffic for example, this means about 60%
efficiency improvement for the enqueue operation.

Signed-off-by: Zhihong Wang <zhihong.wang@intel.com>
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Reviewed-by: Jianbo Liu <jianbo.liu@linaro.org>
Tested-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2016-10-26 13:39:09 +02:00
app app/testpmd: fix PF/VF check of flow director 2016-10-25 23:11:02 +02:00
buildtools pmdinfogen: fix clang build 2016-10-04 11:50:56 +02:00
config kni: remove compile time debug configuration 2016-10-13 23:11:26 +02:00
doc doc: fix libcrypto guide title 2016-10-13 21:58:44 +02:00
drivers crypto: register aliases for renamed vdev drivers 2016-10-25 18:49:18 +02:00
examples examples/l3fwd: use accelerated CRC on ARM 2016-10-25 18:49:18 +02:00
lib vhost: optimize cache access 2016-10-26 13:39:09 +02:00
mk drivers: rename register macro prefix 2016-10-14 01:49:32 +02:00
pkg version: 16.07.0 2016-07-28 20:48:41 +02:00
scripts app/testpmd: use consistent vdev names 2016-10-13 15:55:51 +02:00
tools tools: bind crypto devices 2016-10-04 20:41:09 +02:00
.gitignore doc: generate NIC overview table from ini files 2016-08-03 18:42:17 +02: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 net: introduce net library 2016-10-11 18:16:22 +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