DPDK-helloworld实例分析

【环境】

         VMware12 pro 、DPDK-16.04、Ubuntu14.04

【程序流程】

        1.启动初始运行环境,初始EAL
        2.遍历可用lcore并调用lcore_hello函数
        3.执行结束  

【运行指令】

        1.进入DPDK目录

         cd dpdk-

        2.设置运行环境
         export RTE_SDK=/home/wwr/dpdk-16.04(设置dpdk路径,请根据实际情况而定)
         export RTE_TARGET=x86_64-native-linuxapp-gcc

       3.编译
         make

       4.运行参数

         ./build/helloworld -c COREMASK -n NUM

【参数解析】

          coremask:十六进制掩码表示分配的逻辑内核
          num:内存通道数

【运行截图】


PS: 3是十六进制 11表示使用lcore0和lcore1

       lcore0默认是主线程,lcore1是从属线程。

       helloworld先在从线程运行hello函数,最后在主线程运行hello函数,所以顺序为hello from core 1、hello from core 0

DPDK-helloworld实例分析_第1张图片

PS: f是十六进制 1111表示使用lcore0、lcore1、lcore2、lcore3

       lcore0默认是主线程,lcore1、lcore2、lcore3是从属线程。

       helloworld先在从线程运行hello函数,最后在主线程运行hello函数,所以顺序为1、2、3、0


DPDK-helloworld实例分析_第2张图片

PS:可以指定lcore1为主线程,所以顺序为0、2、3、1


【源码分析】

DPDK-helloworld实例分析_第3张图片

PS:

     1.rte_eal_init( )解析入口参数,保存为DPDK运行的系统信息,主要功能包括:
     配置初始化、内存初始化、内存池初始化、队列初始化、告警初始化、中断初始化、PCI初始化、定时器初始化等
     2.rte_eal_remote_launch( int(*f)(void *),void *arg,unsigned slave_id);
       第一个参数:被征召的线程
      第二个参数:传给从线程的参数
      第三个参数:指定逻辑核


你可能感兴趣的:(DPDK)