zoukankan      html  css  js  c++  java
  • DPDK helloworld

    环境搭建:

    手头没有intel的板子,暂时只能用虚拟机代替;

    image

    虚拟机的CPU数量不能超过真实的机器,因此暂时无法模拟出NUMA的环境;

    dpdk需要至少两块网卡,eth0和eth1用于dpdk使用,eth2用于跟主机通信;

    打开虚拟机的配置文件, xxx.vmx,把所有网卡都设置成e1000

    ethernet0.present = "TRUE"
    ethernet0.connectionType = "hostonly"
    ethernet0.wakeOnPcktRcv = "FALSE"
    ethernet0.addressType = "static"
    ethernet0.virtualDev = "e1000"
    ethernet1.present = "TRUE"
    ethernet1.connectionType = "hostonly"
    ethernet1.wakeOnPcktRcv = "FALSE"
    ethernet1.addressType = "static"
    ethernet1.virtualDev = "e1000"
    ethernet2.present = "TRUE"
    ethernet2.connectionType = "nat"
    ethernet2.wakeOnPcktRcv = "FALSE"
    ethernet2.addressType = "static"
    ethernet2.virtualDev = "e1000"

    下载dpdk源码

    git clone git://dpdk.org/dpdk

    设置环境变量

    export RTE_SDK=/root/dpdk
    export RTE_TARGET=i686-default-linuxapp-gcc
    export EXTRA_CFLAGS="-O0 -g"

    由于是32位机器,设置target为i686;更多target可以参考intel-dpdk-getting-started-guide

    其中EXTRA_CFLAGS把编译优化去掉,并加上调试信息;

    编译代码

    make config T=i686-default-linuxapp-gcc
    make install T=i686-default-linuxapp-gcc
    make -C i686-default-linuxapp-gcc
    make -C examples/helloworld

    预留hugepage个数,并挂载

    echo 128 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
    
    mount -t hugetlbfs nodev /mnt/huge

    加载uio和igb_uio

    modprobe uio
    insmod ./build/kmod/igb_uio.ko

    绑定设备

    ./tools/igb_uio_bind.py --bind=igb_uio eth0
    ./tools/igb_uio_bind.py --bind=igb_uio eth1

    如果需要解绑定,后面的bus:slot.func各种设备不一样

    ./tools/igb_uio_bind.py --unbind 02:01.0
    ./tools/igb_uio_bind.py --unbind 02:02.0
    
    ./tools/igb_uio_bind.py --bind=e1000 02:01.0
    ./tools/igb_uio_bind.py --bind=e1000 02:02.0

    最后就可以运行helloworld

    root@bogon:~/dpdk# ./examples/helloworld/build/helloworld -c 0xf -n 2
    EAL: Cannot read numa node link for lcore 0 - using physical package id instead
    EAL: Detected lcore 0 as core 0 on socket 0
    EAL: Cannot read numa node link for lcore 1 - using physical package id instead
    EAL: Detected lcore 1 as core 1 on socket 0
    EAL: Cannot read numa node link for lcore 2 - using physical package id instead
    EAL: Detected lcore 2 as core 0 on socket 1
    EAL: Cannot read numa node link for lcore 3 - using physical package id instead
    EAL: Detected lcore 3 as core 1 on socket 1
    EAL: Skip lcore 4 (not detected)
    EAL: Skip lcore 5 (not detected)
    EAL: Skip lcore 6 (not detected)
    EAL: Skip lcore 7 (not detected)
    EAL: Skip lcore 8 (not detected)
    EAL: Skip lcore 9 (not detected)
    EAL: Skip lcore 10 (not detected)
    EAL: Skip lcore 11 (not detected)
    EAL: Skip lcore 12 (not detected)
    EAL: Skip lcore 13 (not detected)
    EAL: Skip lcore 14 (not detected)
    EAL: Skip lcore 15 (not detected)
    EAL: Skip lcore 16 (not detected)
    EAL: Skip lcore 17 (not detected)
    EAL: Skip lcore 18 (not detected)
    EAL: Skip lcore 19 (not detected)
    EAL: Skip lcore 20 (not detected)
    EAL: Skip lcore 21 (not detected)
    EAL: Skip lcore 22 (not detected)
    EAL: Skip lcore 23 (not detected)
    EAL: Skip lcore 24 (not detected)
    EAL: Skip lcore 25 (not detected)
    EAL: Skip lcore 26 (not detected)
    EAL: Skip lcore 27 (not detected)
    EAL: Skip lcore 28 (not detected)
    EAL: Skip lcore 29 (not detected)
    EAL: Skip lcore 30 (not detected)
    EAL: Skip lcore 31 (not detected)
    EAL: Skip lcore 32 (not detected)
    EAL: Skip lcore 33 (not detected)
    EAL: Skip lcore 34 (not detected)
    EAL: Skip lcore 35 (not detected)
    EAL: Skip lcore 36 (not detected)
    EAL: Skip lcore 37 (not detected)
    EAL: Skip lcore 38 (not detected)
    EAL: Skip lcore 39 (not detected)
    EAL: Skip lcore 40 (not detected)
    EAL: Skip lcore 41 (not detected)
    EAL: Skip lcore 42 (not detected)
    EAL: Skip lcore 43 (not detected)
    EAL: Skip lcore 44 (not detected)
    EAL: Skip lcore 45 (not detected)
    EAL: Skip lcore 46 (not detected)
    EAL: Skip lcore 47 (not detected)
    EAL: Skip lcore 48 (not detected)
    EAL: Skip lcore 49 (not detected)
    EAL: Skip lcore 50 (not detected)
    EAL: Skip lcore 51 (not detected)
    EAL: Skip lcore 52 (not detected)
    EAL: Skip lcore 53 (not detected)
    EAL: Skip lcore 54 (not detected)
    EAL: Skip lcore 55 (not detected)
    EAL: Skip lcore 56 (not detected)
    EAL: Skip lcore 57 (not detected)
    EAL: Skip lcore 58 (not detected)
    EAL: Skip lcore 59 (not detected)
    EAL: Skip lcore 60 (not detected)
    EAL: Skip lcore 61 (not detected)
    EAL: Skip lcore 62 (not detected)
    EAL: Skip lcore 63 (not detected)
    EAL: Setting up memory...
    EAL: cannot open /proc/self/numa_maps, consider that all memory is in socket_id 0
    EAL: Ask a virtual area of 0xe800000 bytes
    EAL: Virtual area found at 0xa8400000 (size = 0xe800000)
    EAL: Ask a virtual area of 0x200000 bytes
    EAL: Virtual area found at 0xa8000000 (size = 0x200000)
    EAL: Ask a virtual area of 0x400000 bytes
    EAL: Virtual area found at 0xa7a00000 (size = 0x400000)
    EAL: Ask a virtual area of 0x200000 bytes
    EAL: Virtual area found at 0xa7600000 (size = 0x200000)
    EAL: Ask a virtual area of 0xc00000 bytes
    EAL: Virtual area found at 0xa6800000 (size = 0xc00000)
    EAL: Ask a virtual area of 0x200000 bytes
    EAL: Virtual area found at 0xa6400000 (size = 0x200000)
    EAL: Ask a virtual area of 0x200000 bytes
    EAL: Virtual area found at 0xa6000000 (size = 0x200000)
    EAL: Requesting 128 pages of size 2MB from socket 0
    EAL: TSC frequency is ~2660068 KHz
    EAL: Master core 0 is ready (tid=b7599800)
    EAL: Core 1 is ready (tid=a5fffb40)
    EAL: Core 2 is ready (tid=a57feb40)
    EAL: Core 3 is ready (tid=a4ffdb40)
    hello from core 1
    hello from core 3
    hello from core 2
    hello from core 0

    后面就可以用gdb调试了

  • 相关阅读:
    Linux网卡上添加多个IP
    TCP_Wrappers基础知识介绍
    工作、生活、思考、人生、经验、总结
    网络层安全
    centos7.0 安装nginx
    linux 下配置jdk
    yii2.0 中的队列
    centos7.0 activemq的安装
    solrCloud
    线性顺序表
  • 原文地址:https://www.cnblogs.com/chanwai1219/p/3632246.html
Copyright © 2011-2022 走看看