zoukankan      html  css  js  c++  java
  • DPDK+OpenvSwitch-centos7.4安装

    系统版本

    [root@controller ~]# cat /etc/redhat-release
    CentOS Linux release 7.4.1708 (Core)

    DPDK版本:

    dpdk-18.02

    硬件支持检查:

    $grep hpet/proc/timer_list   //需支持hpet

    如无显示,需设置BIOS:Advanced -> PCH-IO Configuration -> High Precision Timer ->(Change from Disabled to Enabled if necessary)

    [root@controller ~]# grep hpet /proc/timer_list
    Clock Event Device: hpet
    set_next_event: hpet_legacy_next_event
    set_mode: hpet_legacy_set_mode

    安装必要软件:

    yum install -y lrzsz gcc make  numactl-devel  pciutils

    安装kernel-devel和kernel-headers 需要跟自己的内核版本对应上,我的是3.10.0-693.el7.x86_64(centos7.4),那就需要安装对应的的kernel-devel-3.10.0-693.el7.centos.x86_64.rpm,kernel-headers-3.10.0-693.el7.centos.x86_64.rpm

    用yum info kernel-headers检查当前yum源中的kernel信息,如果对不上大家可以自行下载src包进行编译

     

    我也是编译好的这里就直接安装了

     yum localinstall kernel-devel-3.10.0-693.el7.centos.x86_64.rpm

     yum localinstall kernel-headers-3.10.0-693.el7.centos.x86_64.rpm

    编译DPDK的时候需要用到这个目录

    ln -sf /usr/src/kernels/3.10.0-693.el7.centos.x86_64/ /lib/modules/3.10.0-693.el7.x86_64/build 

    配置hugepages页

    mkdir -p /dev/hugepages

    mount -t hugetlbfs none /dev/hugepages -o pagesize=2MB

    echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

    echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages

    查看hugepages页

    [root@controller ~]# cat /proc/meminfo |grep Huge

    AnonHugePages: 1781760 kB
    HugePages_Total: 2048
    HugePages_Free: 2048
    HugePages_Rsvd: 0
    HugePages_Surp: 0
    Hugepagesize: 2048 kB

    开机挂载hugepages页目录

    [root@controller ~]# egrep -v "^#|^$" /etc/fstab
    /dev/mapper/centos-root / xfs defaults 0 0
    UUID=f3da6cd0-9c70-4683-be74-265a8ffe3e92 /boot xfs defaults 0 0
    nodev /dev/hugepages hugetlbfs pagesize=1GB 0 0

    赋予权限(正常下载dpdk的这个过程可以不用看,我是从别的机器上cp安装文件的有些文件没有执行权限)

    chmod +x /root/dpdk-18.02/x86_64-native-linuxapp-gcc/app/dpdk-pmdinfogen

    chmod +x /root/dpdk-18.02/buildtools/*

    开始安装DPDK,cd到dpdk目录执行:

    make install T=x86_64-native-linuxapp-gcc DESTDIR=/usr/src/dpdk

    T就是你的机器架构,dpdk官方上有解释。

    DESTDIR 就是dpdk安装目录

    正常情况不会有报错的按照上面的方法。

    根据需要导入对应的模块,当然也可以全部导入

    1、UIO

         一个用于设置设备的小内核模块,将设备内存映射到用户空间并注册中断。在许多情况下,Linux内核中包含的标准uio_pci_generic模块可以提供uio功能。

         该模块可以使用以下命令加载:

                       modprobe uio_pci_generic

    2、对于一些不支持传统中断的设备,例如虚拟功能(VF)设备,可能需要使用igb_uio模块来代替uio_pci_generic。

    modprobe uio

    insmod kmod/igb_uio.ko  #kmod路径在/root/dpdk-18.02/x86_64-native-linuxapp-gcc/kmod,在dpdk源码文件的地方

    3、VFIO    

    依靠IOMMU保护,与UIO相比,它是更强大,更安全的驱动程序。要使用VFIO,必须加载vfio-pci模块:
    注意:内核必须版本必须>=v3.6.0,必须支持硬件IO虚拟化(如 Intel® VT-d)

     绑定网卡测试:

    cd /root/dpdk-18.02/usertools

    查看网卡绑定状态:

    [root@controller usertools]# ./dpdk-devbind.py --status

      

    Network devices using DPDK-compatible driver这栏中为<none>就是还没有绑定的网卡, 紫色框中就是可以绑定的网卡的名称

    绑定网卡:

    [root@controller usertools]# ./dpdk-devbind.py --bind=uio_pci_generic  02:00.1

    --bind=可以改成上面说到的三种模块

    02:00.1 网卡的设备号,这里也可以时候网卡的名字

    查看下绑定情况

    取消绑定:

    ./dpdk-devbind.py --bind=igb  02:00.1  #igb就是普通的网卡或者ixgbe都行

  • 相关阅读:
    TreeSet和TreeMap中“相等”元素可能并不相等
    求众数——摩尔投票
    5802. 统计好数字的数目
    快速幂
    LCP 07.传递消息
    332. 重新安排行程(欧拉回路问题)
    126. 单词接龙 II
    879. 盈利计划
    287. 寻找重复数
    239. 滑动窗口最大值
  • 原文地址:https://www.cnblogs.com/menkeyi/p/9171487.html
Copyright © 2011-2022 走看看