DPDK 多进程

DPDK库里是支持多进程和多线程,本文主要总结多进程的相关的操作。

DPDK多进程使用的关键启动参数:

  • --proc-type:指定一个dpdk进程是主进程还是副进程(参数值就用上面的primary或是secondary,或者是auto)
  • --file-prefix:允许非合作的进程拥有不同的内存区域。主副进程默认文件路径/var/run/.rte_config,同一个处理组的主副进程使用相同的参数,
    如果想运行多个主进程,这个参数就必须指定!
  • --socket-mem:设置从hugepages分配多大的存储空间。默认会用掉所有的hugepages,所以建议指定这个参数,不管是单cpu还是在NUMA中。
    eg:单socket,--socket-mem=512;在numa中,--socket-mem=512,512;多个socket间用‘,’号隔开;
  • -w : 后面跟网卡的PCI号,指定使用网卡。设置了这参数,DPDK只会使用这个参数对应的网卡,不会初始化其他的。

在Multi-process Sample Application中介绍了4种使用场景:

Basic Multi-process Example,DPDK进程间通过ring,内存池,队列,进行信息交互。
Symmetric Multi-process Example,主进程初始化所有资源,副进程直接获取资源进行数据包处理,副进程除了不初始化资源,数据包处理和主进程是一样的。每个进程获取每个端口的一个RX, TX队列。
Client-Server Multi-process Example,主进程初始化资源和接收所有收到的数据包并轮询分发给副进程处理。
Master-slave Multi-process Example,这个模式主要是介绍各进程之间存在依赖关系,主进程和副进程,副进程和副进程

[root@localhost simple_mp]#   ./build/simple_mp -l 0-1   --proc-type=primary
EAL: Detected 128 lcore(s)
EAL: Detected 4 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: PCI device 0000:05:00.0 on NUMA socket 0
EAL:   probe driver: 19e5:200 net_hinic
net_hinic: Initializing pf hinic-0000:05:00.0 in primary process
net_hinic: Device 0000:05:00.0 hwif attribute:
net_hinic: func_idx:0, p2p_idx:0, pciintf_idx:0, vf_in_pf:0, ppf_idx:0, global_vf_id:15, func_type:2
net_hinic: num_aeqs:4, num_ceqs:4, num_irqs:32, dma_attr:2
net_hinic: API CMD poll status timeout
net_hinic: chain type: 0x7
net_hinic: chain hw cpld error: 0x1
net_hinic: chain hw check error: 0x0
net_hinic: chain hw current fsm: 0x0
net_hinic: chain hw current ci: 0x0
net_hinic: Chain hw current pi: 0x1
net_hinic: Send msg to mgmt failed
net_hinic: Failed to get board info, err: -110, status: 0x0, out size: 0x0
net_hinic: Check card workmode failed, dev_name: 0000:05:00.0
net_hinic: Create nic device failed, dev_name: 0000:05:00.0
net_hinic: Initialize 0000:05:00.0 in primary failed
EAL: Requested device 0000:05:00.0 cannot be used
EAL: PCI device 0000:06:00.0 on NUMA socket 0
EAL:   probe driver: 19e5:200 net_hinic
EAL: PCI device 0000:7d:00.0 on NUMA socket 0
EAL:   probe driver: 19e5:a222 net_hns3
EAL: PCI device 0000:7d:00.1 on NUMA socket 0
EAL:   probe driver: 19e5:a221 net_hns3
EAL: PCI device 0000:7d:00.2 on NUMA socket 0
EAL:   probe driver: 19e5:a222 net_hns3
EAL: PCI device 0000:7d:00.3 on NUMA socket 0
EAL:   probe driver: 19e5:a221 net_hns3
APP: Finished Process Init.
Starting core 1

simple_mp > primary send hello1
Command not found

simple_mp > send hello by primary
Bad arguments

simple_mp > 
simple_mp > send hello_by_primary

simple_mp > core 1: Received 'hello_by_sencondary'


simple_mp > 

 ./build/simple_mp -l 0-1  --proc-type=secondary

(免费订阅,永久学习)学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂

    1. [root@localhost lib]# ps -elf | grep simple_mp
      0 S root       8457 124128 13  80   0 - 8389378 wait_w 03:24 pts/1  00:00:16 ./build/simple_mp -l 0-1 --proc-type=primary
      0 S root       8471   7504  6  80   0 - 8389498 wait_w 03:24 pts/2  00:00:06 ./build/simple_mp -l 0-1 --proc-type=secondary
      0 S root       8564  57486  0  80   0 -  1729 pipe_w 03:26 pts/0    00:00:00 grep --color=auto simple_mp
      [root@localhost lib]# ps -mo pid,tid,%cpu,psr -p 8471
         PID    TID %CPU PSR
        8471      -  6.0   -
           -   8471  0.0   0
           -   8472  0.0  33
           -   8473  0.0  10
           -   8474  6.0   1
      [root@localhost lib]# ps -T  -p 8471
         PID   SPID TTY        
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值