编译和运行DPDK示例程序
2019-08-28 本文已影响0人
古埃尔公园
DPDK(Data Plane Development Kit)是数据平面开发工具包,由用于加速在各种CPU架构上运行的数据包处理的库组成。
在Linux上部署DPDK的方法请参考:
在Linux(CentOS)上部署DPDK------命令行方式
1.DPDK 应用程序编译
该章节的内容参照自官网的DPDK build sample apps
当DPDK的target环境创建好后(例如x86_64-native-linuxapp-gcc
),x86_64-native-linuxapp-gcc
目录中会包含编译应用程序的库和头文件。
在编译DPDK应用程序之前,首先需要指定两个环境变量:
-
RTE_SDK
- 指定为DPDK安装路径 -
RTE_TARGET
- 指定为DPDK target路径
在DPDK的examples
路径下面有许多示例应用,这里以其中的helloworld
为例进行编译:
cd /home/dpdk-stable-18.11.2/examples/helloworld/
export RTE_SDK=/home/dpdk-stable-18.11.2
export RTE_TARGET=x86_64-native-linuxapp-gcc
make
CC main.o
LD helloworld
INSTALL-APP helloworld
INSTALL-MAP helloworld.map
DPDK的examples
路径下面的应用均可以通过这种方式编译,也可以直接在examples
路径下面运行make
,将这些应用全都编译好。
2.DPDK 应用程序运行
在运行应用程序之前,需要确保:
- Hugepages设置完成。
- 任何需要使用的内核驱动都已经加载好。
- 如果有需要,应用程序使用的端口应绑定到相应的内核驱动程序。
DPDK应用程序与DPDK target环境的环境抽象层EAL(Environmental Abstraction Layer )库相关联,该库提供了一些通用于每个DPDK应用程序的选项。
./helloworld [-c COREMASK | -l CORELIST] [-n NUM] [-b <domain:bus:devid.func>] \
[--socket-mem=MB,...] [-d LIB.so|DIR] [-m MB] [-r NUM] [-v] [--file-prefix] \
[--proc-type <primary|secondary|auto>]
EAL的详细配置请参照:DPDK EAL参数
可按照下列参数运行./helloworld
:
./build/helloworld -l 0-3 -n 4
其中-l
命令指定cpu cores list是EAL必须的配置;若没有指定--socket-mem
,则默认会按照预留的hugepages size来分配。