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调试了

  • 相关阅读:
    HDU1879 kruscal 继续畅通工程
    poj1094 拓扑 Sorting It All Out
    (转)搞ACM的你伤不起
    (转)女生应该找一个玩ACM的男生
    poj3259 bellman——ford Wormholes解绝负权问题
    poj2253 最短路 floyd Frogger
    Leetcode 42. Trapping Rain Water
    Leetcode 41. First Missing Positive
    Leetcode 4. Median of Two Sorted Arrays(二分)
    Codeforces:Good Bye 2018(题解)
  • 原文地址:https://www.cnblogs.com/chanwai1219/p/3632246.html
Copyright © 2011-2022 走看看