Update relevant artifacts to add support for DPDK v2.1.0
- INSTALL.DPDK.md
- acinclude.m4: Change DPDK library name
- netdev-dpdk: Limit minimum mbuf size to to adapt to DPDK bug fix that
changes the treatment of the requested mbuf size
- build.sh: Change DPDK version number
Note that this breaks compatibility with DPDK v2.0.0 although only
for the library name change.
Note that throughput for vhost ports with mergeable buffers is reduced
about 10% due to a necessary bug fix in DPDK vhost code.
Signed-off-by: Mark Kavanagh <mark.b.kavanagh@intel.com>
Signed-off-by: Michal Weglicki <michalx.weglicki@intel.com>
Signed-off-by: Timo Puha <timox.puha@intel.com>
Acked-by: Daniele Di Proietto <diproiettod@vmware.com>
if [ "$DPDK" ]; then
if [ -z "$DPDK_VER" ]; then
if [ "$DPDK" ]; then
if [ -z "$DPDK_VER" ]; then
fi
install_dpdk $DPDK_VER
if [ "$CC" = "clang" ]; then
fi
install_dpdk $DPDK_VER
if [ "$CC" = "clang" ]; then
Martino Fornasa mf@fornasa.it
Maryam Tahhan maryam.tahhan@intel.com
Mehak Mahajan mmahajan@nicira.com
Martino Fornasa mf@fornasa.it
Maryam Tahhan maryam.tahhan@intel.com
Mehak Mahajan mmahajan@nicira.com
+Michal Weglicki michalx.weglicki@intel.com
Mijo Safradin mijo@linux.vnet.ibm.com
Minoru TAKAHASHI takahashi.minoru7@gmail.com
Murphy McCauley murphy.mccauley@gmail.com
Mijo Safradin mijo@linux.vnet.ibm.com
Minoru TAKAHASHI takahashi.minoru7@gmail.com
Murphy McCauley murphy.mccauley@gmail.com
Thomas Goirand zigo@debian.org
Thomas Graf tgraf@noironetworks.com
Thomas Lacroix thomas.lacroix@citrix.com
Thomas Goirand zigo@debian.org
Thomas Graf tgraf@noironetworks.com
Thomas Lacroix thomas.lacroix@citrix.com
+Timo Puha timox.puha@intel.com
Todd Deshane deshantm@gmail.com
Tom Everman teverman@google.com
Tsvi Slonim tsvi@toroki.com
Todd Deshane deshantm@gmail.com
Tom Everman teverman@google.com
Tsvi Slonim tsvi@toroki.com
Building and Installing:
------------------------
Building and Installing:
------------------------
Optional (if building with vhost-cuse): `fuse`, `fuse-devel` (`libfuse-dev`
on Debian/Ubuntu)
Optional (if building with vhost-cuse): `fuse`, `fuse-devel` (`libfuse-dev`
on Debian/Ubuntu)
- export DPDK_DIR=/usr/src/dpdk-2.0
+ export DPDK_DIR=/usr/src/dpdk-2.1
`CONFIG_RTE_BUILD_COMBINE_LIBS=y`
`CONFIG_RTE_BUILD_COMBINE_LIBS=y`
- Update `config/common_linuxapp` so that DPDK is built with vhost
- libraries.
-
- `CONFIG_RTE_LIBRTE_VHOST=y`
-
Then run `make install` to build and install the library.
For default install without IVSHMEM:
Then run `make install` to build and install the library.
For default install without IVSHMEM:
3. Bind network device to vfio-pci:
`$DPDK_DIR/tools/dpdk_nic_bind.py --bind=vfio-pci eth1`
3. Bind network device to vfio-pci:
`$DPDK_DIR/tools/dpdk_nic_bind.py --bind=vfio-pci eth1`
-3. Mount the hugetable filsystem
+3. Mount the hugetable filesystem
`mount -t hugetlbfs -o pagesize=1G none /dev/hugepages`
`mount -t hugetlbfs -o pagesize=1G none /dev/hugepages`
-DPDK 2.0 supports two types of vhost:
+DPDK 2.1 supports two types of vhost:
1. vhost-user
2. vhost-cuse
1. vhost-user
2. vhost-cuse
DPDK vhost-user Prerequisites:
-------------------------
DPDK vhost-user Prerequisites:
-------------------------
-1. DPDK 2.0 with vhost support enabled as documented in the "Building and
+1. DPDK 2.1 with vhost support enabled as documented in the "Building and
Installing section"
2. QEMU version v2.1.0+
Installing section"
2. QEMU version v2.1.0+
DPDK vhost-cuse Prerequisites:
-------------------------
DPDK vhost-cuse Prerequisites:
-------------------------
-1. DPDK 2.0 with vhost support enabled as documented in the "Building and
+1. DPDK 2.1 with vhost support enabled as documented in the "Building and
Installing section"
As an additional step, you must enable vhost-cuse in DPDK by setting the
following additional flag in `config/common_linuxapp`:
Installing section"
As an additional step, you must enable vhost-cuse in DPDK by setting the
following additional flag in `config/common_linuxapp`:
DPDK_INCLUDE=$RTE_SDK/include
DPDK_LIB_DIR=$RTE_SDK/lib
DPDK_INCLUDE=$RTE_SDK/include
DPDK_LIB_DIR=$RTE_SDK/lib
- DPDK_LIB="-lintel_dpdk"
DPDK_EXTRA_LIB=""
AC_COMPILE_IFELSE(
DPDK_EXTRA_LIB=""
AC_COMPILE_IFELSE(
/*
* need to reserve tons of extra space in the mbufs so we can align the
* DMA addresses to 4KB.
/*
* need to reserve tons of extra space in the mbufs so we can align the
* DMA addresses to 4KB.
+ * The minimum mbuf size is limited to avoid scatter behaviour and drop in
+ * performance for standard Ethernet MTU.
#define MTU_TO_MAX_LEN(mtu) ((mtu) + ETHER_HDR_LEN + ETHER_CRC_LEN)
#define MTU_TO_MAX_LEN(mtu) ((mtu) + ETHER_HDR_LEN + ETHER_CRC_LEN)
-#define MBUF_SIZE(mtu) (MTU_TO_MAX_LEN(mtu) + (512) + \
- sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM)
+#define MBUF_SIZE_MTU(mtu) (MTU_TO_MAX_LEN(mtu) \
+ + sizeof(struct dp_packet) \
+ + RTE_PKTMBUF_HEADROOM)
+#define MBUF_SIZE_DRIVER (2048 \
+ + sizeof (struct rte_mbuf) \
+ + RTE_PKTMBUF_HEADROOM)
+#define MBUF_SIZE(mtu) MAX(MBUF_SIZE_MTU(mtu), MBUF_SIZE_DRIVER)
/* Max and min number of packets in the mempool. OVS tries to allocate a
* mempool with MAX_NB_MBUF: if this fails (because the system doesn't have
/* Max and min number of packets in the mempool. OVS tries to allocate a
* mempool with MAX_NB_MBUF: if this fails (because the system doesn't have