dpdk源码分析
tiantao2012
这个作者很懒,什么都没留下…
展开
-
dpdk中测试cache和memory延迟的工具
在https://github.com/DPDK/dpdk/blob/main/app/test/test_memcpy_perf.c原创 2021-05-29 19:39:10 · 614 阅读 · 0 评论 -
dpdk 中的中断
要在dpdk中使用中断,需要调用rte_eal_intr_init 来进行中断子系统初始化,但是这个函数不用用户调用,会在环境初始化函数rte_eal_init 中被调用,用户只要调用rte_intr_callback_register 来注册callback即可rte_eal_intr_init 源码分析如下:intrte_eal_intr_init(void){ int ret =...原创 2018-06-04 15:52:15 · 1778 阅读 · 0 评论 -
dpdk中的timer
dpdk 中有提供time没看负责定时操作,同时在example/timer中有提供一个测试code可以告知大家如何使用time 没看从meson.build中可以看出源文件只有一个main.cdeps += 'timer'sources = files( 'main.c')从makefile中可以看出binary的名字叫timer,这个main.c 可以同时被build 为动态链接...原创 2018-05-28 20:30:43 · 3054 阅读 · 0 评论 -
kni
当dpdk不想在用户态实现协议栈的还,可以采用KNI 调用内核实现的协议栈kni分为用户态和内核态其内核态的入口为lib/librte_eal/linuxapp/kni/kni_misc.c中#可以看这是个标准的ko的实现,其入口函数是kni_initmodule_init(kni_init);static int __initkni_init(void){ int rc; #...原创 2018-06-13 14:28:20 · 1813 阅读 · 0 评论 -
dpdk中的大页初始化
[root@localhost ~]# cd /sys/kernel/mm/hugepages[root@localhost hugepages]# ls -altotal 0drwxr-xr-x. 4 root root 0 6月 5 04:53 .drwxr-xr-x. 5 root root 0 6月 5 04:53 ..drwxr-xr-x. 2 root root 0 ...原创 2018-06-06 19:45:17 · 2191 阅读 · 0 评论 -
mbuf_user_pool_ops和mbuf_platform_pool_ops
dpdk中有两种pool 来有限分配用户内存。分别是mbuf_user_pool_ops和mbuf_platform_pool_ops当用户调用rte_mbuf_best_mempool_ops 来从pool中分配内存是,优先从mbuf_user_pool_ops 中分配,然后才是从mbuf_platform_pool_ops 中分配。具体分析如下:const char * __rte_...原创 2018-06-14 16:19:15 · 591 阅读 · 0 评论 -
dpdk中的timer子系统的使用
dpdk中要使用timer 必须分为下面三步第一步:在dpdk中要使用timer,必须初始化RTE timer library其源码分析如下:voidrte_timer_subsystem_init(void){ unsigned lcore_id; /* since priv_timer is static, it's zeroed by default, so only ini...原创 2018-06-01 10:50:07 · 2842 阅读 · 0 评论 -
dpdk中的多核编程
dpdk中采用多核编程代替多线程模型,详细分析如下:在环境初始化函数rte_eal_init的最后有下面这段code#遍历系统中所有的cpuRTE_LCORE_FOREACH_SLAVE(i) { /* * create communication pipes between master thread * and children */ #创建两个pipe,用于...原创 2018-06-08 15:03:22 · 2437 阅读 · 0 评论 -
dpdk的编译
第一步下载dpdk源码和安装依赖包git clone git://dpdk.org/dpdkyum install kernel-headers libpcap-devel numactl-develdpdk的编译可以通过两种方式来编译第一种是通过下载的dpdk目录下的usertools/dpdk-setup.sh 这个脚本来执行,编译成功后,通过可以通过usertools/dpdk-...原创 2019-02-11 14:48:18 · 5040 阅读 · 0 评论