(dpdk f-stack) top-工具代码分析

17 篇文章 22 订阅 ¥59.90 ¥99.00
19 篇文章 9 订阅
本文深入分析了top工具的工作原理,特别是它如何与nginx worker进程通过msg_ring进行通信。在每个worker进程中,msg从msg_ring[proc_id].ring[0]出队列,经处理后重新入队列到msg_ring[proc_id].ring[msg->msg_type]。在ff_mod_init和ff_dpdk_init中初始化ring,并在ff_dpdk_run中启动worker执行main_loop。top命令的main_loop不仅处理网卡收发,还处理来自不同类型的msgRing消息。
摘要由CSDN通过智能技术生成

命令工具大体原理:

    nginx每个worker进程都有一个独立的FreeBSD栈,执行main_loop--process_msg_ring,此函数处理流程:

        1)从msg_ring[proc_id].ring[0]中出队列,取出msg;

        2)判断是FF_SYSCTL类型,然后执行ff_sysctl函数获取或设置FreeBSD内核的状态参数;

        3)最后再把结果msg入队列msg_ring[proc_id].ring[msg->msg_type]。

       top命令行工具和nginx worker之间即使用 msg_ring 通信;

 

不同类型消息的ring创建:

    worker的进程初始化函数 ngx_worker_process_init 中先执行 ff_mod_init, 完事执行 ff_run;

1)ff_mod_init-->ff_init-->ff_dpdk_init 函数中:

rte_eal_init:

//每个worker中针对 slave core 创建线程处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ygmdream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值