编译和运行DPDK示例程序

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 ] \
          [--socket-mem=MB,...] [-d LIB.so|DIR] [-m MB] [-r NUM] [-v] [--file-prefix] \
          [--proc-type ]

EAL的详细配置请参照:DPDK EAL参数

可按照下列参数运行./helloworld

./build/helloworld -l 0-3 -n 4

其中-l命令指定cpu cores list是EAL必须的配置;若没有指定--socket-mem,则默认会按照预留的hugepages size来分配。

你可能感兴趣的:(编译和运行DPDK示例程序)