数据平面开发套件(DPDK [1],Data Plane Development Kit)是由6WIND,Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。[1]
编译dpdk19.08.2,并使用example的案例时报错及解决方式。
cd ./dpdk-stable-19.08.2
./usertools/dpdk-setup.sh
输入36 ,回车
eal/eal_memory.c:32:10: fatal error: numa.h: No such file or directory
报错原因是numa没下载。
下载缺失部分
sudo apt-get install libnuma-dev
然后重新进入执行
./usertools/dpdk-setup.sh
输入36 ,回车
Build complete [x86_64-native-linuxapp-gcc]
Installation cannot run with T defined and DESTDIR undefined
报错原因是,没有配置安装目录,无法安装。
本次开发不需要安装dpdk,所以忽略这个报错。
依次输入43-50,输入49和50的时候,还需要在回车后第二次输入512
/usr/bin/env: ‘python’: No such file or directory
没有找到python的路径,输入下面命令,发现系统是有python的,只是不是路径上
whereis python3
添加一个链接即可
sudo ln -s /usr/bin/python3 /usr/bin/python
Warning: routing table indicates that interface 0000:03:00.0 is active. Not modifying
需要先把这个网卡down掉,再修改
sudo ifconfig eth160 down
完成dpdk编译配置
进入examples目录的helloworld案例
cd examples/helloworld
make
/bin/sh: 1: pkg-config: not found
报错原因是没有安装pkg-config
sudo apt-get install pkg-config
Makefile:44: *** "Please define RTE_SDK environment variable"。 停止。
报错原因,没有定义RTE_SDK 环境变量
进入到dpdk解压目录,查看解压目录路径,然后配置上去
export RTE_SDK=解压路径
或者
export RTE_SDK=$(PWD)
还需要配置刚刚dpdk编译生成的目录的环境变量
通常是选择的dpdk环境的名称
export RTE_TARGET=x86_64-native-linuxapp-gcc
如果上面一步的 RTE_TARGET 没有配置正确,会有下面的报错:
***mk/internal/rte.extvars.mk:29: *** Cannot find .config in ***
修改成正确的就行了
进入helloworld目录,执行 make
输出如下则编译成功
CC main.o
LD helloworld
INSTALL-APP helloworld
INSTALL-MAP helloworld.map
执行
./build/helloworld
EAL: Cannot get hugepage information.
已放弃 (核心已转储)
报错原因应该是巨页没有配置
cat /proc/meminfo | grep Huge
输出
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
输出
0
依次执行下面的命令配置巨页
1.
echo '1024' > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
2.
如果没/mnt/huge这个文件夹,就创建一个huge,有则忽略下面这一步
mkdir /mnt/huge
3.
mount -t hugetlbfs nodev /mnt/huge
make clean
make
./build/helloworld
输出
hello from core 1
hello from core 0
以上就全部完成,可以去编写自己的代码了,报错部分基本解决,还有部分警告部分还没有去解决。
百度百科— dpdk
dpdk — 官网