ubuntu16.04 DPDK helloworld实战
一. DPDK 的安装
参照连接 https://www.jianshu.com/p/a9a3885efe5a 里面的dpdk安装过程
安装根据上述地址教程安装dpdk 和 libpcap
运行helloworld参照 DPDK应用基础
环境:ubuntu16.04 64位
DPDK: 16.11.1
libpcap 1.8.1
1.1 安装libpcap
-
去官网 http://www.tcpdump.org/#latest-releases 下载libpcap 1.8.1 的压缩包;
-
保存提取的/home文件夹下;
-
安装依赖库m4、bison、flex;
sudo apt-get install m4 bison flex
-
进入提取出来的libpcap-1.8.1文件夹;
cd libpcap-1.8.1
-
在特权用户下配置安装libpacap;
sudo su ./configure make make install
-
安装成功,但是后面安装DPDK的时候却提示找不到libpcap.so.1,因为libpcap.so.1默认安装到了/usr/local/lib下,我们做一个符号链接到/usr/lib/下即可。
sudo ln -s /usr/local/lib/libpcap.so.1 /usr/lib/libpcap.so.1
libpacap 是DPDK 可选的编译工具之一,libpacap的头文件和和库(libpcap-devel),用于编译和使用基于libpcap的PMD。PMD在默认情况下禁用,可以在编译时的配置文件中通过CONFIG_RTE_LIBRTE_PMD_PCAP=y启用。
1.2 安装DPDK
- 去官网 http://dpdk.org/download下载dpdk-stable-16.11.1 的压缩包;
- 解压提取到/home
- 配置并编译DPDK,架构为64位x86linux系统,gcc编译
cd dpdk-stable-16.11.1 make install T=x86_64-native-linuxapp-gcc #参考文章中没有提到安装编译器,吃了很多苦 make config T=x86_64-native-linuxapp-gcc sed -ri 's,(PMD_PCAP=).*,\1y,' build/.config make
二. helloworld实例的运行
2.1配置hugepage
在DPDK的实例运行前都必须配置大页缓存
-
预留hugepage给DPDK使用(在这使用)
hugepages=1024
-
对于其他hugepage页面尺寸设置如下:页面尺寸必须特别制定或者将该尺寸设置为系统默认的巨页大小。例如4个1GB的页面
default_hugepagesz=1 Ghugepagesz=1G hugepages=4
-
在/sys/devices/目录下的nr_hugepages中设置hugepage大小
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
不同系统可能不一样可以用find找一下nr_hugepags具体在哪个文件夹下
2.2 DPDK使用hugepage
-
当hugepage 被预留成功,DPDK就可以使用hugepage内存:
mkdir /mnt/huge mount -t hugetlbfs nodev /mnt/huge
-
如果需要永久使用一个挂载点,可以将这个挂载点的信息写入/etc/fstab文件中:
nodev /mnt/huge hugetlbfs deault 0 0
2.3 编译 helloworld 应用程序
DPDK 编译完成后,它会包含应用程序所需的所有依赖库与头文件。当应用程序在Linux上DPDK环境编译时,必须输出下列变量。
-
RTE_SDK :指向DPDK的安装目录
-
RTE_TARGET:指向DPDK目标环境的目录
export RTE_SDK=/home/user/dpdk-stable-16.11.1 cp -r $RTE_SDK/examples/helloworld my_rte_app cd my_rte_app/ export RTE_TARGET=x86_64-native-linuxapp-gcc sudo make