centos安装dpdk

时间:2024-03-27 22:14:59
  • 下载dpdk包并解压
  • 配置环境变量
  • 编译dpdk
  • 测试dpdk
  • 参考文章

1. 下载dpdk安装包
http://core.dpdk.org/download/
下载 dpdk-19.02.tar.xz
解压到本地目录/home下: tar -xf dpdk-19.02.tar.xz

2. 环境变量配置:
在dpdk-19.08下,创建一个dpdkenv的文件,在里面填充如下内容:

export RTE_SDK=’/home/dpdk-19.02’ (pwd为你dkdk的解压目录),
export RTE_TARGET=x86_64-native-linuxapp-gcc (对于64位机用这个命令,对于32位机用i686-native-linuxapp-gcc)

执行一下 source dpdkenv.
查看环境变量是否设置好:env |grep RTE

3. 通过dpdk提供的脚本安装dpdk
到 /home/dpdk-19.02/usertools目录下,执行./dpdk-setup.sh,依次选择执行以下操作:

  1. 配置编译的环境:
    centos安装dpdk
  2. 加载igb uio模块:
    centos安装dpdk
  3. 配置大页:
    centos安装dpdk
  4. 绑定网卡:
    centos安装dpdk

执行脚本过程中,可能出现以下各种问题:

  1. 没有安装gcc命令:
    centos安装dpdk
    解决办法:yum -y install gcc 安装gcc环境

  2. 没有安装依赖库 numa.h
    centos安装dpdk
    解决办法:yum install numactl-devel*x86_64,安装numa.h相关库即可解决.

  3. uio模块没有加载
    centos安装dpdk
    解决办法:modprobe uio,手动向内核中加载uio模块。

  4. 内核版本和dpdk的模块版本不一致导致的问题
    centos安装dpdk解决办法

    1 #cat /etc/redhat-release
    2 CentOS Linux release 7.6.1810 (Core)
    4 #uname -r 查看一下系统版本
    5 3.10.0-957.el7.x86_64
    6 #rpm -qa kernel 通过rpm命令查看我所安装的内核版本
    7 kernel-3.10.0-957.el7.x86_64
    8 #ls /usr/src/kernels/ 查看有没有相应的内核开发包
    9 空 如果该目录下没有系统内核源码,执行以下操作
    10 #yum install kernel-devel 安装内核头文件后
    11 #ls /usr/src/kernels/
    12 3.10.0-1062.12.1.el7.x86_64
    13 两个版本号不一致,进行升级并重启
    18 #yum -y update kernel kernel-devel
    19 #reboot
    20 再此查看,版本号一致,问题解决
    21 #ls /usr/src/kernels/
    22 3.10.0-1062.12.1.el7.x86_64
    23 #uname -r
    24 10.0-1062.12.1.el7.x86_64

  5. 无法绑定网卡:不down掉的话,绑定会告诉你ok,然而实际上真相是下面那个not modifying,也就是失败了。
    centos安装dpdk
    解决办法:ifconfig ens33 down,关掉一个网卡,才能绑定dpdk。
    ens33down掉之后,出现了无法连接xshell的情况。一般reboot之后,ens33会重新启动,问题消失。

4.测试dpdk
完成以上内容环境就配置完成了,下面我们来测试一下,测试程序在/home/dpdk-19.02/example/helloworld目录下:

  1. 在dpdk-19.0/目录下 配置环境变量:source dpdkenv

  2. 在dpdk-19.02/example/helloworld/目录下 编译:make,之后生成一个build目录

  3. 执行可执行文件:./build/helloworld
    我遇到了以下问题:
    centos安装dpdk
    从上面的输出中发现是 hugepage 相关的问题,执行了下面的操作:

    sudo su -c ‘echo 128 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages’

    再执行./build/helloworld,成功输出:
    centos安装dpdk
    到此为止dpdk安装正确!!!

5.参考:
2篇很好的文章:
https://blog.csdn.net/u010411205/article/details/100895584
https://blog.csdn.net/weixin_28712713/article/details/100804163
uname -r和/usr/src下的版本号不一致问题: https://www.cnblogs.com/pureyes/p/4127499.html
cannot get hugepage information问题: https://blog.csdn.net/Longyu_wlz/article/details/102994876