The file attributes of the rst files have been changed to 644 Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
329 lines
11 KiB
ReStructuredText
329 lines
11 KiB
ReStructuredText
.. BSD LICENSE
|
||
Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
|
||
All rights reserved.
|
||
|
||
Redistribution and use in source and binary forms, with or without
|
||
modification, are permitted provided that the following conditions
|
||
are met:
|
||
|
||
* Redistributions of source code must retain the above copyright
|
||
notice, this list of conditions and the following disclaimer.
|
||
* Redistributions in binary form must reproduce the above copyright
|
||
notice, this list of conditions and the following disclaimer in
|
||
the documentation and/or other materials provided with the
|
||
distribution.
|
||
* Neither the name of Intel Corporation nor the names of its
|
||
contributors may be used to endorse or promote products derived
|
||
from this software without specific prior written permission.
|
||
|
||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
||
Quick Start Setup Script
|
||
========================
|
||
|
||
The setup.sh script, found in the tools subdirectory, allows the user to perform the following tasks:
|
||
|
||
* Build the Intel® DPDK libraries
|
||
|
||
* Insert and remove the Intel® DPDK IGB_UIO kernel module
|
||
|
||
* Insert and remove VFIO kernel modules
|
||
|
||
* Insert and remove the Intel® DPDK KNI kernel module
|
||
|
||
* Create and delete hugepages for NUMA and non-NUMA cases
|
||
|
||
* View network port status and reserve ports for Intel® DPDK application use
|
||
|
||
* Set up permissions for using VFIO as a non-privileged user
|
||
|
||
* Run the test and testpmd applications
|
||
|
||
* Look at hugepages in the meminfo
|
||
|
||
* List hugepages in /mnt/huge
|
||
|
||
* Remove built Intel® DPDK libraries
|
||
|
||
Once these steps have been completed for one of the EAL targets,
|
||
the user may compile their own application that links in the EAL libraries to create the Intel® DPDK image.
|
||
|
||
Script Organization
|
||
-------------------
|
||
|
||
The setup.sh script is logically organized into a series of steps that a user performs in sequence.
|
||
Each step provides a number of options that guide the user to completing the desired task.
|
||
The following is a brief synopsis of each step.
|
||
|
||
**Step 1: Build DPDK Libraries**
|
||
|
||
Initially, the user must select an Intel® DPDK target to choose the correct target type and compiler options to use when building the libraries.
|
||
|
||
The user must have all libraries, modules, updates and compilers installed in the system prior to this,
|
||
as described in the earlier chapters in this Getting Started Guide.
|
||
|
||
**Step 2: Setup Environment**
|
||
|
||
The user configures the Linux* environment to support the running of Intel® DPDK applications.
|
||
Hugepages can be set up for NUMA or non-NUMA systems. Any existing hugepages will be removed.
|
||
The Intel® DPDK kernel module that is needed can also be inserted in this step,
|
||
and network ports may be bound to this module for Intel® DPDK application use.
|
||
|
||
**Step 3: Run an Application**
|
||
|
||
The user may run the test application once the other steps have been performed.
|
||
The test application allows the user to run a series of functional tests for the Intel® DPDK.
|
||
The testpmd application, which supports the receiving and sending of packets, can also be run.
|
||
|
||
**Step 4: Examining the System**
|
||
|
||
This step provides some tools for examining the status of hugepage mappings.
|
||
|
||
**Step 5: System Cleanup**
|
||
|
||
The final step has options for restoring the system to its original state.
|
||
|
||
Use Cases
|
||
---------
|
||
|
||
The following are some example of how to use the setup.sh script.
|
||
The script should be run using the source command.
|
||
Some options in the script prompt the user for further data before proceeding.
|
||
|
||
.. warning::
|
||
|
||
The setup.sh script should be run with root privileges.
|
||
|
||
.. code-block:: console
|
||
|
||
user@host:~/rte$ source tools/setup.sh
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
RTE_SDK exported as /home/user/rte
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
Step 1: Select the DPDK environment to build
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
[1] i686-native-linuxapp-gcc
|
||
|
||
[2] i686-native-linuxapp-icc
|
||
|
||
[3] x86_64-ivshmem-linuxapp-gcc
|
||
|
||
[4] x86_64-ivshmem-linuxapp-icc
|
||
|
||
[5] x86_64-native-bsdapp-gcc
|
||
|
||
[6] x86_64-native-linuxapp-gcc
|
||
|
||
[7] x86_64-native-linuxapp-icc
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
Step 2: Setup linuxapp environment
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
[8] Insert IGB UIO module
|
||
|
||
[9] Insert VFIO module
|
||
|
||
[10] Insert KNI module
|
||
|
||
[11] Setup hugepage mappings for non-NUMA systems
|
||
|
||
[12] Setup hugepage mappings for NUMA systems
|
||
|
||
[13] Display current Ethernet device settings
|
||
|
||
[14] Bind Ethernet device to IGB UIO module
|
||
|
||
[15] Bind Ethernet device to VFIO module
|
||
|
||
[16] Setup VFIO permissions
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
Step 3: Run test application for linuxapp environment
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
[17] Run test application ($RTE_TARGET/app/test)
|
||
|
||
[18] Run testpmd application in interactive mode ($RTE_TARGET/app/testpmd)
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
Step 4: Other tools
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
[19] List hugepage info from /proc/meminfo
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
Step 5: Uninstall and system cleanup
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
[20] Uninstall all targets
|
||
|
||
[21] Unbind NICs from IGB UIO driver
|
||
|
||
[22] Remove IGB UIO module
|
||
|
||
[23] Remove VFIO module
|
||
|
||
[24] Remove KNI module
|
||
|
||
[25] Remove hugepage mappings
|
||
|
||
[26] Exit Script
|
||
|
||
Option:
|
||
|
||
The following selection demonstrates the creation of the x86_64-native-linuxapp-gcc Intel® DPDK library.
|
||
|
||
.. code-block:: console
|
||
|
||
Option: 4
|
||
|
||
================== Installing x86_64-native-linuxapp-gcc
|
||
|
||
Configuration done
|
||
== Build scripts
|
||
== Build scripts/testhost
|
||
HOSTCC testhost.o
|
||
...
|
||
Build complete
|
||
RTE_TARGET exported as x86_64-native -linuxapp-gcc
|
||
|
||
The following selection demonstrates the starting of the Intel® DPDK UIO driver.
|
||
|
||
.. code-block:: console
|
||
|
||
Option: 5
|
||
|
||
Unloading any existing DPDK UIO module
|
||
Loading DPDK UIO module
|
||
|
||
The following selection demonstrates the creation of hugepages in a NUMA system.
|
||
1024 2 Mbyte pages are assigned to each node.
|
||
The result is that the application should use -m 4096 for starting the application to access both memory areas
|
||
(this is done automatically if the -m option is not provided).
|
||
|
||
.. note::
|
||
|
||
If prompts are displayed to remove temporary files, type ‘y’.
|
||
|
||
.. code-block:: console
|
||
|
||
Option: 11
|
||
|
||
Removing currently reserved hugepages
|
||
nmounting /mnt/huge and removing directory
|
||
Input the number of 2MB pages for each node
|
||
Example: to have 128MB of hugepages available per node,
|
||
enter '64' to reserve 64 * 2MB pages on each node
|
||
Number of pages for node0: 1024
|
||
Number of pages for node1: 1024
|
||
Reserving hugepages
|
||
Creating /mnt/huge and mounting as hugetlbfs
|
||
|
||
The following selection demonstrates the launch of the test application to run on a single core.
|
||
|
||
.. code-block:: console
|
||
|
||
Option: 14
|
||
|
||
Enter hex bitmask of cores to execute test app on
|
||
Example: to execute app on cores 0 to 7, enter 0xff
|
||
bitmask: 0x01
|
||
Launching app
|
||
EAL: coremask set to 1
|
||
EAL: Detected lcore 0 on socket 0
|
||
...
|
||
EAL: Master core 0 is ready (tid=1b2ad720)
|
||
RTE>>
|
||
|
||
Applications
|
||
------------
|
||
|
||
Once the user has run the setup.sh script, built one of the EAL targets and set up hugepages (if using one of the Linux EAL targets),
|
||
the user can then move on to building and running their application or one of the examples provided.
|
||
|
||
The examples in the /examples directory provide a good starting point to gain an understanding of the operation of the Intel® DPDK.
|
||
The following command sequence shows how the helloworld sample application is built and run.
|
||
As recommended in Section 4.2.1 , “Logical Core Use by Applications ” on page 14,
|
||
the logical core layout of the platform should be determined when selecting a core mask to use for an application.
|
||
|
||
.. code-block:: console
|
||
|
||
rte@rte-desktop:~/rte/examples$ cd helloworld/
|
||
rte@rte-desktop:~/rte/examples/helloworld$ make
|
||
CC main.o
|
||
LD helloworld
|
||
INSTALL-APP helloworld
|
||
INSTALL-MAP helloworld.map
|
||
|
||
rte@rte-desktop:~/rte/examples/helloworld$ sudo ./build/app/helloworld -c 0xf -n 3
|
||
[sudo] password for rte:
|
||
EAL: coremask set to f
|
||
EAL: Detected lcore 0 as core 0 on socket 0
|
||
EAL: Detected lcore 1 as core 0 on socket 1
|
||
EAL: Detected lcore 2 as core 1 on socket 0
|
||
EAL: Detected lcore 3 as core 1 on socket 1
|
||
EAL: Setting up hugepage memory...
|
||
EAL: Ask a virtual area of 0x200000 bytes
|
||
EAL: Virtual area found at 0x7f0add800000 (size = 0x200000)
|
||
EAL: Ask a virtual area of 0x3d400000 bytes
|
||
EAL: Virtual area found at 0x7f0aa0200000 (size = 0x3d400000)
|
||
EAL: Ask a virtual area of 0x400000 bytes
|
||
EAL: Virtual area found at 0x7f0a9fc00000 (size = 0x400000)
|
||
EAL: Ask a virtual area of 0x400000 bytes
|
||
EAL: Virtual area found at 0x7f0a9f600000 (size = 0x400000)
|
||
EAL: Ask a virtual area of 0x400000 bytes
|
||
EAL: Virtual area found at 0x7f0a9f000000 (size = 0x400000)
|
||
EAL: Ask a virtual area of 0x800000 bytes
|
||
EAL: Virtual area found at 0x7f0a9e600000 (size = 0x800000)
|
||
EAL: Ask a virtual area of 0x800000 bytes
|
||
EAL: Virtual area found at 0x7f0a9dc00000 (size = 0x800000)
|
||
EAL: Ask a virtual area of 0x400000 bytes
|
||
EAL: Virtual area found at 0x7f0a9d600000 (size = 0x400000)
|
||
EAL: Ask a virtual area of 0x400000 bytes
|
||
EAL: Virtual area found at 0x7f0a9d000000 (size = 0x400000)
|
||
EAL: Ask a virtual area of 0x400000 bytes
|
||
EAL: Virtual area found at 0x7f0a9ca00000 (size = 0x400000)
|
||
EAL: Ask a virtual area of 0x200000 bytes
|
||
EAL: Virtual area found at 0x7f0a9c600000 (size = 0x200000)
|
||
EAL: Ask a virtual area of 0x200000 bytes
|
||
EAL: Virtual area found at 0x7f0a9c200000 (size = 0x200000)
|
||
EAL: Ask a virtual area of 0x3fc00000 bytes
|
||
EAL: Virtual area found at 0x7f0a5c400000 (size = 0x3fc00000)
|
||
EAL: Ask a virtual area of 0x200000 bytes
|
||
EAL: Virtual area found at 0x7f0a5c000000 (size = 0x200000)
|
||
EAL: Requesting 1024 pages of size 2MB from socket 0
|
||
EAL: Requesting 1024 pages of size 2MB from socket 1
|
||
EAL: Master core 0 is ready (tid=de25b700)
|
||
EAL: Core 1 is ready (tid=5b7fe700)
|
||
EAL: Core 3 is ready (tid=5a7fc700)
|
||
EAL: Core 2 is ready (tid=5affd700)
|
||
hello from core 1
|
||
hello from core 2
|
||
hello from core 3
|
||
hello from core 0
|