zoukankan      html  css  js  c++  java
  • centos 6.x下编译dpdk 16.7 心得

    之前对dpdk编译了解得较少,之前直接就把centos yum update了,造成测试经理部署的centos 6.5升级为6.9,造成dpdk编译出错。

    先说说centos 6.9下编译的心得:

    1. 安装DPDK,解压缩DPDK

    2.配置编译 config/common_base CONFIG_RTE_BUILD_SHARED_LIB =y

    3.编译
    gcc 版本需要用 4.4.7的来编译,208开发机上的/usr/bin/gcc是这个版本,/opt/rh...下和/usr/local/gcc-6.x ..下的gcc版本太高了,是不能编译dpdk16.04这个版本的。如果不是4.4.7这个版本,可以:
    export PATH=/usr/bin:$PATH 来指定gcc用/usr/bin/gcc这个版本。

    尝试过用高版本的来编译,提示说不存在compiler-gcc5.h,把compiler-gcc5.h拷贝到类似于/usr/src/kernels/2.6.32-696.10.1.el6.x86_64/include/linux
    这样的目录下,但是因为部分dpdk代码不规范,高版本的会发现更多的错误。

    用4.4.7这个编译,发现KNI模块提示出错,原因在http://dev.dpdk.narkive.com/Tmz3Gv1z/dpdk-dev-can-t-build-dpdk-16-04-on-centos-6-8 给出了答案。根据http://www.jianshu.com/p/bc2bde0e4442,我们可以禁掉KNI模块,否则按照前一个链接,需要编译内核,比较麻烦。修改config/。这个问题,dpdk QQ开发群也有同感:“是的,6.5可以,升级以后各种问题。”

    近点KNI,需要修改文件,config/common_linuxapp,搜索关键字“KNI”,置为“n”。

    主要问题是CentOS 6.x太老了,dpdk官方懒得全面支持。

    运行/tools/dpdk-setup.sh 选择x86_64-native-linuxapp-gcc (avx 指令不支持)
    #
    # Compile librte_acl
    #
    CONFIG_RTE_LIBRTE_ACL=n
    CONFIG_RTE_LIBRTE_ACL_DEBUG=n
    重新编译DPDK 重新编译应用程序

    编译完,说编译成功,但是“Installation cannot run with T defined and DESTDIR undefined”,提示你没有指定安装路径,这里我们只需要编译,本来也不需要安装,所以忽略,不影响使用。

    按照http://dpdk-docs.readthedocs.io/en/latest/linux_gsg/sys_reqs.html#dpdk 这个网页,说要求Kernel version >= 2.6.34,我们的centos6.x都是2.6.32的内核,不符合要求。这个问题有待以后研究。

    调整过参数(disable KNI和ACL)的dpdk 16.07.02在这里: https://192.168.1.91/svn/sourceev/trunk/dpdk-16.07.2-adjustParmeter.tar.gz
    ACL是针对特定网卡禁掉的,别的网卡未必需要对acl禁掉。

    2. 当然最简单的方式是启动时,回退到原来的内核版本。修改/boot/grub/grub.conf,把default改为6.5的那个内核(2.32-431...)。

    如果原来没有原来的内核,可以参考https://iforday.com/86.html,来安装6.5的内核。

    后来,发现内核更新后,程序没法跑,不能确定是程序的问题,还是dpdk的问题。

    禁止内核更新,需要这么做。

    方法如下:

      方法1:

      # vim /etc/yum.conf

      exclude=kernel*

      在 [main]配置段下,追加或修改以上内容。

      可通过下面的命令查看是否生效:

      # yum update | grep -i kernel

      方法2:

      在yum命令行中加上-x参数,来跳过指定的更新。如:

      # yum -x ‘kernel*’ update

      Linux禁止系统内核Kernel升级的方法就介绍到这里了,方法2是通过在yum命令行中加入参数来实现的,相较于方法1简单了很多。

      1. #禁止更新内核
      2. exclude=kernel*
      1. # 禁止更新系统
      2. exclude=centos-release*

     

  • 相关阅读:
    C#利用反射动态调用类及方法
    系统程序监控软件
    SQL server 2008 安装和远程访问的问题
    sql server 创建临时表
    IIS 时间问题
    windows 2008 安装 sql server 2008
    sql server xml nodes 的使用
    Window 7sp1 安装vs2010 sp1 打开xaml文件崩溃
    CSS资源网址
    Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0
  • 原文地址:https://www.cnblogs.com/tangxiaosheng/p/7481439.html
Copyright © 2011-2022 走看看