From: Kevin Traynor Date: Tue, 3 Jan 2017 18:21:28 +0000 (+0000) Subject: doc: Remove ivshmem instructions. X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=90ca71dd317fea1ccf0040389dae895aa7b2b561;p=ovs.git doc: Remove ivshmem instructions. ivshmem is a path to the guest using DPDK rings that was introduced before userspace vhost was available in the OVS-DPDK datapath. ivshmem is external to OVS but the scheme of using it with DPDK rings is documented. Remove ivshmem instruction documentation because: - The ivshmem library has been removed in DPDK since DPDK 16.11. - The instructions/scheme provided will not work with current supported and future DPDK versions. - The linked patch needed to enable support in QEMU has never been upstreamed and does not apply to the last 4 QEMU releases. - Userspace vhost has become the defacto OVS-DPDK path to the guest. Fixes: 04de404e1bfa ("netdev-dpdk: Add support for DPDK 16.11") Cc: Ciara Loftus Cc: Stephen Finucane Signed-off-by: Kevin Traynor Acked-by: Stephen Finucane Acked-by: Mauricio Vasquez B Signed-off-by: Daniele Di Proietto --- diff --git a/Documentation/automake.mk b/Documentation/automake.mk index 300cabeba..9dda5430d 100644 --- a/Documentation/automake.mk +++ b/Documentation/automake.mk @@ -29,7 +29,6 @@ EXTRA_DIST += \ Documentation/topics/design.rst \ Documentation/topics/dpdk/index.rst \ Documentation/topics/dpdk/vhost-user.rst \ - Documentation/topics/dpdk/ivshmem.rst \ Documentation/topics/testing.rst \ Documentation/topics/high-availability.rst \ Documentation/topics/integration.rst \ diff --git a/Documentation/howto/dpdk.rst b/Documentation/howto/dpdk.rst index db92a8e1b..2361f3aab 100644 --- a/Documentation/howto/dpdk.rst +++ b/Documentation/howto/dpdk.rst @@ -558,71 +558,3 @@ devices to bridge ``br0``. Once complete, follow the below steps: Check traffic on multiple queues:: $ cat /proc/interrupts | grep virtio - -PHY-VM-PHY (IVSHMEM loopback) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -IVSHMEM can also be validated using the PHY-VM-PHY configuration. To begin, add -a userspace bridge, two ``dpdk`` (PHY) ports, and a single ``dpdkr`` port:: - - # Add userspace bridge - $ ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev - - # Add two dpdk ports - $ ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk - $ ovs-vsctl add-port br0 dpdk1 -- set Interface dpdk1 type=dpdk - - # Add one dpdkr ports - $ ovs-vsctl add-port br0 dpdkr0 -- set Interface dpdkr0 type=dpdkr - -.. TODO(stephenfin): What flows should the user configure? - -QEMU must be patched to enable IVSHMEM support:: - - $ cd /usr/src/ - $ wget http://wiki.qemu.org/download/qemu-2.2.1.tar.bz2 - $ tar -jxvf qemu-2.2.1.tar.bz2 - $ cd /usr/src/qemu-2.2.1 - $ wget https://raw.githubusercontent.com/netgroup-polito/un-orchestrator/master/orchestrator/compute_controller/plugins/kvm-libvirt/patches/ivshmem-qemu-2.2.1.patch - $ patch -p1 < ivshmem-qemu-2.2.1.patch - $ ./configure --target-list=x86_64-softmmu --enable-debug --extra-cflags='-g' - $ make -j 4 - -In addition, the ``cmdline_generator`` utility must be downloaded and built:: - - $ mkdir -p /usr/src/cmdline_generator - $ cd /usr/src/cmdline_generator - $ wget https://raw.githubusercontent.com/netgroup-polito/un-orchestrator/master/orchestrator/compute_controller/plugins/kvm-libvirt/cmdline_generator/cmdline_generator.c - $ wget https://raw.githubusercontent.com/netgroup-polito/un-orchestrator/master/orchestrator/compute_controller/plugins/kvm-libvirt/cmdline_generator/Makefile - $ export RTE_SDK=/usr/src/dpdk-16.11 - $ export RTE_TARGET=x86_64-ivshmem-linuxapp-gcc - $ make - -Once both the patche QEMU and ``cmdline_generator`` utilities have been built, -run ``cmdline_generator`` to generate a suitable QEMU commandline, and use this -to instantiate a guest. For example:: - - $ ./build/cmdline_generator -m -p dpdkr0 XXX - $ cmdline=`cat OVSMEMPOOL` - $ export VM_NAME=ivshmem-vm - $ export QCOW2_IMAGE=/root/CentOS7_x86_64.qcow2 - $ export QEMU_BIN=/usr/src/qemu-2.2.1/x86_64-softmmu/qemu-system-x86_64 - $ taskset 0x20 $QEMU_BIN -cpu host -smp 2,cores=2 -hda $QCOW2_IMAGE \ - -m 4096 --enable-kvm -name $VM_NAME -nographic -vnc :2 \ - -pidfile /tmp/vm1.pid $cmdline - -When the guest has started, connect to it and build and run the sample -``dpdkr`` app. This application will simply loopback packets received over the -DPDK ring port:: - - $ echo 1024 > /proc/sys/vm/nr_hugepages - $ mount -t hugetlbfs nodev /dev/hugepages (if not already mounted) - - # Build the DPDK ring application in the VM - $ export RTE_SDK=/root/dpdk-16.11 - $ export RTE_TARGET=x86_64-ivshmem-linuxapp-gcc - $ make - - # Run dpdkring application - $ ./build/dpdkr -c 1 -n 4 -- -n 0 - # where "-n 0" refers to ring '0' i.e dpdkr0 diff --git a/Documentation/index.rst b/Documentation/index.rst index d799c9c0d..deb44d397 100644 --- a/Documentation/index.rst +++ b/Documentation/index.rst @@ -72,8 +72,7 @@ Deeper Dive :doc:`topics/porting` - **DPDK** :doc:`howto/dpdk` | - :doc:`topics/dpdk/vhost-user` | - :doc:`topics/dpdk/ivshmem` + :doc:`topics/dpdk/vhost-user` - **Windows** :doc:`topics/windows` diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst index 54d56ec41..10ceabba4 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -91,10 +91,6 @@ Install DPDK $ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET $ make install T=$DPDK_TARGET DESTDIR=install - If IVSHMEM support is required, use a different target:: - - $ export DPDK_TARGET=x86_64-ivshmem-linuxapp-gcc - #. (Optional) Export the DPDK shared library location If DPDK was built as a shared library, export the path to this library for @@ -226,7 +222,7 @@ listed below. Defaults will be provided for all values not explicitly set. ``vhost-sock-dir`` Option to set the path to the vhost-user unix socket files. -If allocating more than one GB hugepage (as for IVSHMEM), you can configure the +If allocating more than one GB hugepage, you can configure the amount of memory used from any given NUMA nodes. For example, to use 1GB from NUMA node 0, run:: @@ -240,8 +236,6 @@ threads and pin them to cores 1,2, run:: $ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x6 -For details on using IVSHMEM with DPDK, refer to :doc:`/topics/dpdk/ivshmem`. - Refer to ovs-vswitchd.conf.db(5) for additional information on configuration options. diff --git a/Documentation/topics/dpdk/index.rst b/Documentation/topics/dpdk/index.rst index 3c98a9a6d..180ebbf3d 100644 --- a/Documentation/topics/dpdk/index.rst +++ b/Documentation/topics/dpdk/index.rst @@ -29,4 +29,3 @@ The DPDK Datapath :maxdepth: 2 vhost-user - ivshmem diff --git a/Documentation/topics/dpdk/ivshmem.rst b/Documentation/topics/dpdk/ivshmem.rst deleted file mode 100644 index bd4dd99d9..000000000 --- a/Documentation/topics/dpdk/ivshmem.rst +++ /dev/null @@ -1,28 +0,0 @@ -.. - Licensed under the Apache License, Version 2.0 (the "License"); you may - not use this file except in compliance with the License. You may obtain - a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - License for the specific language governing permissions and limitations - under the License. - - Convention for heading levels in Open vSwitch documentation: - - ======= Heading 0 (reserved for the title in a document) - ------- Heading 1 - ~~~~~~~ Heading 2 - +++++++ Heading 3 - ''''''' Heading 4 - - Avoid deeper levels because they do not render well. - -================== -DPDK IVSHMEM Ports -================== - -**TODO**