(dpdk f-stack) top-工具代码分析
Posted ygmdream
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(dpdk f-stack) top-工具代码分析相关的知识,希望对你有一定的参考价值。
命令工具大体原理:
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 创建线程处理函数 eal_thread_loop, 线程处理函数中等待传来的处理函数
ret = pthread_create(&lcore_config[i].thread_id, NULL, eal_thread_loop, NULL);
init_msg_ring:
for(i = 0; i < nb_procs; ++i)
/*(
以上是关于(dpdk f-stack) top-工具代码分析的主要内容,如果未能解决你的问题,请参考以下文章