博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DPDK架构与特点
阅读量:5222 次
发布时间:2019-06-14

本文共 1341 字,大约阅读时间需要 4 分钟。

当年在某公司实习的时候,当时老大给了我一份DPDK的文档,说是将来很有用,熟悉DPDK对能力提高也有帮助,就试着翻译了

《Intel DPDK Getting Started Guide》和半个《Intel DPDK Programmers Guide》,后来忙着论文就没再搞了。现在,发现

pf_ring的统计虚高了,只好重新拥抱DPDK了。

DPDK的代码量还是很庞大的,分析代码之前理清库里面的各个部分的关系很有必要,下面的一张图很好的表现了各部分关系。

先介绍DPDK中的几个缩写吧:

RTE:Run-Time Environment 

EAL:Environment Abstraction Layer

PMD: Poll-Mode Driver

Memory Manager (librte_malloc,内存管理器)

Librte_malloc 库提供一组API,用于从hugepages创建的memzones中分配内存而不是在堆中分配。这有助于改善Linux用户空间环境下典型的从堆中大量分配4KB页面而容易引起TLB不命中。

Memory Pool Manager (librte_mempool,内存池管理器)

内存池管理器负责分配的内存中的pool对象。一个pool由名称标识,并使用一个ring来存储空闲对象。它提供了其他一些可选的服务,例如每个core的对象缓存和对齐方式帮助器,以确保将填充的对象在所有内存通道上均匀分布。

Ring Manager (librte_ring,环形队列管理器)

在一个有限大小的表中,ring结构提供了一个无锁的多生产者多消费者的FIFO API。相较于无锁队列,它有一些的优势 ;更容易实现,适应于大容量操作和速度更快。一个ring用在内存池管理器(librte_mempool),也可用作cores和(或)在一个逻辑core之上的连接在一起的执行块的通用沟通机制。

Network Packet Buffer Management (librte_mbuf,网络报文缓冲管理)

mbuf 库提供了创建和销毁缓冲区,英特尔 ® DPDK 应用程序可能用来存储消息缓冲。创建消息缓冲区在启动时间和存储在 mempool,并使用英特尔 ® DPDK mempool 库。

此库提供一组 API,用于分配或释放 mbufs,操纵控制消息缓冲区(ctrlmbuf) ——普通的消息缓冲区,还操作数据包缓冲区 (pktmbuf) ­——用来进行网络数据包。

Timer Manager (librte_timer,定时器管理)

timer库向英特尔 ® DPDK 执行单位提供定时器服务,保证以异步方式执行函数的能力。它可以是定期调用,或只是一次性调用。它使用环境抽象层 (EAL) 提供的到的 HPET 接口来获取精确时间的引用,并根据需求在每个核心启动。

上面的介绍有点抽象,还是直接看代码的目录更具体些。

 

 接下来讲讲DPDK的特点。

 

posted on
2015-02-06 17:25 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/mylinuxer/p/4277676.html

你可能感兴趣的文章
MyBatis学习总结——MyBatis快速入门
查看>>
APP主流盈利模式
查看>>
python 连接数据库操作
查看>>
(爱加密系列教程八)Android APP如何防止二次打包
查看>>
F-神殿-2018年第二届河北省大学生程序设计竞赛(位运算)
查看>>
HDU - 2586 How far away ?
查看>>
【转】C#语言之“string格式的日期时间字符串转为DateTime类型”的方法
查看>>
H5页面 input禁止弹出键盘
查看>>
vue爬坑之路(插件安装)
查看>>
一道关于接口的练习题
查看>>
多态的理解
查看>>
刘波对大一的寄语
查看>>
【大数据学习】-Hadoop的版本(转)
查看>>
dev 数据加载等待提示框控件
查看>>
(ZT)杜君立:紧箍咒与纸枷锁
查看>>
运用starling开发的手游FlappyBird
查看>>
线程同步——用户模式下线程同步——Interlocked实现线程同步
查看>>
苹果开发者账号那些事儿(二)
查看>>
鲜贝7.3--mysql 下载小问题
查看>>
[luogu2576 SCOI2010] 幸运数字 (容斥原理)
查看>>