编译和运行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 <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来分配。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容