f-stack 队列和进程关系
来源:互联网 发布:mac触摸板怎么右键 编辑:程序博客网 时间:2024/04/30 02:20
f-stack官网:http://www.f-stack.org/
f-stack详细解释:https://www.qcloud.com/community/article/841415
f-stack是支持多进程的,进程分为RTE_PROC_PRIMARY(只有一个)和RTE_PROC_SECONDARY(可以多个)
RTE_PROC_PRIMARY进程是主进程,做所有初始化的工作,RTE_PROC_SECONDARY进程会通过共享内存获取RTE_PROC_PRIMARY进程初始化好的数据。
各进程绑定独立的网卡队列和 CPU,请求通过设置网卡 RSS 散落到各进程进行处理,
队列和进程是怎么分配的呢?
最好先理解dpdk收发包原理(http://www.cnblogs.com/yhp-smarthome/p/6705638.html)
config.ini里参数lcore_mask决定了启用几个进程,eg lcore_mask=1 启用一个;lcore_mask=3启用2个进程。16进制的位掩码。
init_port_start函数中调用rte_eth_dev_configure(port_id, nb_procs, nb_procs, &port_conf)设置接收和发送队列。假如nb_procs=2的话,这个动作会初始化0,1接收队列和0,1发送队列,0号进程使用0号接收和发送队列,以此类推。
f-stack启动脚本在解析config.ini(lcore_mask=3)后执行启动命令,以nginx为例
nginx ./config.ini -c 3 --proc-type=primary --num-procs=2 --proc-id=0
nginx./config.ini -c 3 --proc-type=primary --num-procs=2 --proc-id=1
f-stack库解析参数,num-procs参数解析ff_global_cfg.dpdk.nb_procs,也就是上面的nb_procs,proc-id解析为ff_global_cfg.dpdk.procs_id.lcore_conf.nb_rx_queue变量会存储进程队列个数,lcore_conf.rx_queue_list存储队列编号。
for (i = 0; i < qconf->nb_rx_queue; ++i) { port_id = qconf->rx_queue_list[i].port_id; queue_id = qconf->rx_queue_list[i].queue_id; ctx = veth_ctx[port_id]; if (enable_kni && rte_eal_process_type() == RTE_PROC_PRIMARY) { ff_kni_process(port_id, queue_id, pkts_burst, MAX_PKT_BURST); } process_arp_ring(port_id, queue_id, pkts_burst, ctx); nb_rx = rte_eth_rx_burst(port_id, queue_id, pkts_burst, MAX_PKT_BURST); if (nb_rx == 0) { continue; }上面代码就是进程在自己接收队列接收数据,按照上面配置,0号进程只会从0号接收队列接收数据,1号进程只会接收1号接收队列数据。发送同理。
- f-stack 队列和进程关系
- 栈Stack和队列Queue
- 栈Stack和队列Queue
- 进程和消息队列
- 进程和消息队列
- 进程和线程关系
- 进程和线程关系
- 栈(Stack)和队列(Queue)
- C++栈和队列(stack,queue,priority_queue)
- 用列表构建stack 和 队列
- Stack and Queue 栈和队列
- python实现stack(栈)和队列(queue)
- JS中的队列(queue)和栈(stack)
- C_栈和队列----stack堆栈容器
- Java实现栈Stack和队列Queue
- F#和Scala中的Continuations用于防止stack overflow
- 队列和线程的关系
- 线程和进程的关系
- 利用断言提高mybatis程序健壮性
- ini文件简单读写
- android studio搜索功能
- zabbix学习(一)安装和配置zabbix-server
- not all arguments converted during string formatting
- f-stack 队列和进程关系
- java最后一张学习卡___别再犯这样的错__第一节内容
- ssm搭建shiro安全框架
- 总结做支付过程中遇到的坑
- 使用jQuery插件qrcode生成二维码
- 面向过程的程序设计
- linux网络编程之tcp的三次握手和四次挥手
- java-可逆加密算法
- TCP协议(保留位URG、PSH,定时器,连接的建立和断开)