DPDK架构与特点
当年在某公司实习的时候,当时老大给了我一份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的特点。
DPDK架构与特点的更多相关文章
- DPDK架构与特点(转)
from:http://www.cnblogs.com/mylinuxer/p/4277676.html DPDK架构与特点 当年在某公司实习的时候,当时老大给了我一份DPDK的文档,说是将来很有用, ...
- DPDK编程指南 2.概述
本章节给出了DPDK架构的一个全局概述. DPDK的主要目的就是为数据面快速报文处理应用程序提供一个简洁完整的框架.用户可以通过代码来理解其中使用的一些技术,构建自己的应用程序或添加自己的协议栈.Al ...
- DPDK 网络加速在 NFV 中的应用
目录 文章目录 目录 前文列表 传统内核协议栈的数据转发性能瓶颈是什么? DPDK DPDK 基本技术 DPDK 架构 DPDK 核心组件 应用 NUMA 亲和性技术减少跨 NUMA 内存访问 应用 ...
- DPDK2.1开发者手册1-2
Programmer’s Guide Release 2.1.0 翻译的目的是强化自己对dpdk的理解,看看2.1版本和现在使用的版本的差异,其次就是可能要走了,为那些要上手dpdk,但是又不想看英文 ...
- 译<容器网络中OVS-DPDK的性能>
译<容器网络中OVS-DPDK的性能> 本文来自对Performance of OVS-DPDK in Container Networks的翻译. 概要--网络功能虚拟化(Network ...
- [SPDK/NVMe存储技术分析]004 - SSD设备的发现
源代码及NVMe协议版本 SPDK : spdk-17.07.1 DPDK : dpdk-17.08 NVMe Spec: 1.2.1 基本分析方法 01 - 到官网http://www.spdk.i ...
- [DPDK][转]DPDK编程开发(4)—lcore
1.知识百科 返回值 操作函数 函数功能 RTE_DECLARE_PER_LCORE (unsigned, _lcore_id) RTE_DECLARE_PER_LCORE (rte_cpuset_t ...
- [dpdk] 读开发指南(2)(内容长期整理中)
接续前节. 7 PMD (Poll Mode Driver) A Poll Mode Driver (PMD) consists of APIs, provided through the BSD d ...
- [dpdk] 读官方文档(1)
前提:已读了这本书<<深入浅出dpdk(朱清河等著)>>. 目标:读官方文档,同时跟着文档进行安装编译等工作. http://dpdk.org/doc/guides/index ...
随机推荐
- 用wubi安装的Ubuntu在重装Windows 7系统后,如何恢复(转)
原文链接:双系统Win7+Ubuntu,重装Win7后找不到Ubuntu启动引导项问题 1.把安装ubuntu->winboot文件夹下wubidr和wubidr.mbr两个文件拷到C盘根目录下 ...
- Redis中对Key进行分类
使用":"体现层次 >set key1:key2:key4 value1 "OK" >set key1:key2:key5 value2 " ...
- OpenCV学习(34) 点到轮廓的距离
在OpenCV中,可以很方便的计算一个像素点到轮廓的距离,计算距离的函数为: double pointPolygonTest(InputArray contour, Point2f pt, bool ...
- mahout源码KMeansDriver分析之四
昨天说到为什么Configuration没有设置conf.set("mapred.job.tracker","hadoop:9000")仍然可以访问hdfs文件 ...
- 如何在Windows 7 或Vista中修改MTU
Windows操作系统使用Maximum Transmission Unit (MTU) 来确定在下面的网络层上可以传输的协议数据包(protocol data packet)的最大尺寸. MTU参数 ...
- 一款超炫的jquery图片播放插件[Cloud Carousel]
今天给大家介绍一个jquery图片播放插件,也可以说是一款幻灯片放映插件,它叫Cloud Carousel,支持自动播放.图片预览.鼠标滚轮滚动,非常酷,下图是效果预览. 该jquery图片播放项目演 ...
- Android -- ViewPager放入多个XML监听每个的控件
我这这里就用了两个imageButton的监听器,两个XML上分别一个. 昨天做了个Viewpager,今天想试试在上面弄上Button试试,结果,弄不来,然后查文档,没查到...百度了1个多小时才出 ...
- 图解Eclipse或者SpringSource Tool Suite 创建模块化Maven项目
第一步:Package Explorer里选择右键,新建Maven项目,如果没有在Other里找,还没有确认一下是否安装了Maven插件 第二步:在Wizards向导里可以通过搜索,找到Maven P ...
- 关于ARM的B,BL跳转指令
.text:00001260 A3 04 00 EB BL sub_24F4 当前地址+ (偏移 << 2 + 8) = ...
- iframe之onload事件小记
项目上做了一个具有wizard(向导)功能的菜单导航页面,子页面的引入通过主页面上iframe的src属性切换实现.为了有个良好的交互体验,每次更新iframe的src时,主页面上都显示一个模态的lo ...