from:http://www.cnblogs.com/mylinuxer/p/4277676.html
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的特点。

转载于:https://www.cnblogs.com/the-tops/p/6808067.html

DPDK架构与特点(转)相关推荐

  1. DPDK — 架构解析

    目录 文章目录 目录 前文列表 DPDK 架构 内核态模块 IGB_UIO KNI PMD DPDK Lib(核心部件库) 组件代码 平台相关模块 Classify 库 QoS 库 前文列表 < ...

  2. 深入理解DPDK架构|经典PDF分享

    Intel DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的 ...

  3. DPDK技术原理与架构

    ​本文参考"<中国电信DPDK技术白皮书v1.0>",DPDK 技术框架可以划分为 DPDK 基本技术与 DPDK 优化技术两部分,前者指标准的 DPDK数据平面开发包 ...

  4. DPDK — PMD,DPDK 的核心优化

    目录 文章目录 目录 前文列表 PMD,DPDK 的核心优化 PMD 与 UIP 的交互实现 PMD 的应用层实现 参考文章 前文列表 <DPDK - 安装部署> <DPDK - 数 ...

  5. DPDK — IGB_UIO,与 UIO Framework 进行交互的内核模块

    目录 文章目录 目录 前文列表 IGB_UIO IGB_UIO 是如何注册 PCI 设备的? Linux 中的 PCI 设备 PCI 的 BAR(基地址) IGB_UIO 如何获得 PCI 的 Mem ...

  6. DPDK — 数据平面开发技术

    目录 文章目录 目录 官方文档 传统服务器的性能瓶颈是什么 如何应对网络密集型的巨大数据量? 异步 I/O 模型的弊端? 协议栈的扩展性? 多核 CPU 的可扩展性? 内存的可扩展性? 解决传统服务器 ...

  7. OVS DPDK vs OVS Deep Dive(十六)

    背景 OvS(Open vSwitch)是云计算平台的重要连接组件,为虚拟机提供网络连,被各大云平台,基础设施供应商广泛使用,比如OpenStack, OpenNebula.vSwitch–Virtu ...

  8. 豆瓣9.8分,周志明的《凤凰架构》,高屋建瓴,推荐(送书)

    导读:周志明老师的<深入理解Java虚拟机>想必大家都不陌生,这本书凭借着生动易懂的文风.系统实用的知识点.成为原创计算机图书经典中的经典.周老师凭借一己之力拉高了 Java 开发者内功水 ...

  9. 深入理解DPDK程序设计|Linux网络2.0

    hi,大家好,由于移动互联网不断发展,导致网络流量徒增,推动着网络技术不断地发展,而CPU的运行频率基本停留在10年前的水平,为了迎接超高速网络技术的挑战,软件也需要大幅度创新,结合硬件技术的发展,D ...

最新文章

  1. Laravel 7发行说明
  2. c语言错误2064,VC错误: error C2064: term does not evaluate to a function
  3. 从简单工厂到工厂方法
  4. fortify扫描java_亲测有效的几种fortify扫描安全漏洞的解决方案
  5. 测试dali协议的软件,基于DALI协议的数字照明控制软件的研发
  6. SQL2000 MD5加密
  7. c语言 给结构体赋初值,c/c++ 结构体赋初值的小技巧
  8. linux malloc core,Linux上使用的malloc版本
  9. ssis 执行任务的日志_SSIS和PowerShell –执行流程任务
  10. Jenkins持续集成案例之-运维部署方式
  11. 程序员和美工是否可共存?
  12. discuz开启url伪静态
  13. 万能解压器安卓版_解压zip app下载-解压zip(手机解压缩软件)下载11.5.4 安卓版-西西软件下载...
  14. 计算机用三角函数时如何用弧度制,单元备课三角函数
  15. unity3D数据的本地存储(xml的方式)
  16. 【读书笔记】《心流:最优体验心理学》——序
  17. 网络抓包工具 wireshark 入门教程
  18. java验证码验证码_Java登录页面实时验证用户名密码和动态验证码
  19. 使用scrapy创建一个项目爬取网易云音乐的所有歌手的相关资料
  20. 基于GA优化BP神经网络的传感器故障诊断算法matlab仿真

热门文章

  1. ios - Push远程通知代码设置 DeviceToken
  2. SAP行列转换的一个方法
  3. 【转】ASP.NET中页面传值
  4. MATLAB GUI界面显示不全的解决办法
  5. 给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数
  6. 字符串异或c语言编写,C语言实现字符串的异或校验.doc
  7. 有哪些老鸟程序员知道而新手不知道的小技巧?自我感受
  8. datetime处理日期和时间
  9. 更多的结构化命令(第十三章)
  10. MySql之触发器【过度变量 new old】