]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | Seastar and DPDK |
2 | ================ | |
3 | ||
4 | Seastar uses the Data Plane Development Kit to drive NIC hardware directly. This | |
5 | provides an enormous performance boost. | |
6 | ||
9f95a23c | 7 | To enable DPDK, specify `--enable-dpdk` to `./configure.py`, and `--dpdk-pmd` as a |
11fdf7f2 TL |
8 | run-time parameter. This will use the DPDK package provided as a git submodule with the |
9 | seastar sources. | |
10 | ||
1e59de90 TL |
11 | Please note, if `--enable-dpdk` is used to build DPDK on an aarch64 machine, you need to |
12 | specify [target architecture](https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html) with optional | |
13 | [feature modifiers](https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html#aarch64-feature-modifiers) | |
14 | with the `--cflags` option as well, like: | |
15 | ```console | |
16 | $ ./configure.py --mode debug --enable-dpdk --cflags='-march=armv8-a+crc+crypto' | |
17 | ``` | |
18 | ||
11fdf7f2 TL |
19 | To use your own self-compiled DPDK package, follow this procedure: |
20 | ||
21 | 1. Setup host to compile DPDK: | |
22 | - Ubuntu | |
23 | `sudo apt-get install -y build-essential linux-image-extra-$(uname -r)` | |
24 | 2. Prepare a DPDK SDK: | |
25 | - Download the latest DPDK release: `wget http://dpdk.org/browse/dpdk/snapshot/dpdk-2.0.0.tar.gz` | |
26 | - Untar it. | |
27 | - Edit config/common_linuxapp: set CONFIG_RTE_MBUF_REFCNT_ATOMIC and CONFIG_RTE_LIBRTE_KNI to 'n'. | |
28 | - Start the tools/setup.sh script as root. | |
29 | - Compile a linuxapp target (option 9). | |
30 | - Install IGB_UIO module (option 12). | |
31 | - Bind some physical port to IGB_UIO (option 18). | |
32 | - Configure hugepage mappings (option 15/16). | |
33 | 3. Modify the CMake cache (`CMakeCache.txt`) to inform CMake of the location of the installed DPDK SDK. |