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的特点。

时间: 2024-10-05 09:13:46

DPDK架构与特点的相关文章

DPDK2.1开发者手册1-2

Programmer’s Guide Release 2.1.0 翻译的目的是强化自己对dpdk的理解,看看2.1版本和现在使用的版本的差异,其次就是可能要走了,为那些要上手dpdk,但是又不想看英文资料的同志们做贡献,英语不好,有些地方可能是自己理解的不对,或者是理解了翻译不出来,看到不咋对的还是去看英文资料对照一下吧,请叫我红领巾,哈哈哈. 引言 文档提供了关于软件架构.开发环境的信息和优化指导. 对于范例程序和编译指令以及运行每个例子的星系,请查看<DPDK Sample Applicat

牛盾云加速架构分享之SACC演讲

站在互联网+风口上,重点探讨高可用架构设计.存储技术架构.CDN和网络架构优化.前端技术进展.移动应用架构设计.IT架构新思维.运维2.0等技术的2015中国系统架构师大会迎来了一次里程碑的盛况.如何同时满足高安全.高可靠和高依赖的行业架构?如何应对海量实时的大流量.高并发.高响应.高实时的互联网架构需求?牛盾云加速为此做出的贡献与探索无疑对得起大家的掌声.今天小编就给各位带来此次大会上大神kindle充分准备的干货与大家分享,希望给有幸参加会议的诸位加深回忆,也给未能与会的朋友们一些参考,让大

[dpdk] 读文档

前提:已读了这本书<<深入浅出dpdk(朱清河等著)>>. 目标:读官方文档,同时跟着文档进行安装编译等工作. 环境:thinkpadT450 + archlinux + kvm + CentOS 7(逐层自下而上的关系) KVM参数: sudo qemu-system-x86_64 -nographic -enable-kvm -numa node -numa node -drive file=disk.img,if=virtio -cdrom /home/tong/ISO/Ce

[DPDK][转]DPDK编程开发(4)—lcore

1.知识百科 返回值 操作函数 函数功能 RTE_DECLARE_PER_LCORE (unsigned, _lcore_id) RTE_DECLARE_PER_LCORE (rte_cpuset_t, _cpuset) static unsigned rte_lcore_id (void) 返回当前运行的lcore ID static unsigned rte_get_master_lcore (void) 返回管理lcore的ID static unsigned rte_lcore_coun

DPDK开发者大会现场报道

当前全球的电信网络,企业数据中心,云服务基础架构正在经历一场行业技术变革,网络数据平面处理能力在多核时代.软件创新和开源社区的推动下,正在引发网络功能虚拟化和软件定义网络的巨变浪潮.在行业巨变的浪潮中应运而生的DPDK, 为新一代数据平面解决方案提供了最佳选择. 2014年中,在英特尔和多家业界领先厂商的共同推动下,DPDK开源社区正式推出并成功发布DPDK R1.7版本.如今,国内外多家软件厂商,电信/数据中心设备制造商都参与其中,为社区做出积极贡献. 为了进一步推动技术和应用,DPDK开源社

DPDK快速上手指南(18.02)

DPDK快速上手(linux) 本文档主要来自linux_gsg-18.02.pdf的翻译,翻译肯定有不妥之处,请批评指正,我会随后修改,不胜感激. 1. 介绍 本文档包含有关DPDK(Data Plane Development Kit的缩写)软件的安装和配置的说明,目的就是让用户快速用起来.本文档描述怎样在linux应用环境下编译和运行一个DPDK应用程序,而不过多深入细节. 1.1文档路线图 以下是针对所有DPDK文档建议的阅读顺序: 发布说明(Release Notes):提供具体的发布

DPDK 分析

DPDK 分析 来源 https://www.cnblogs.com/bakari/p/8404650.html 高性能网络技术 随着云计算产业的异军突起,网络技术的不断创新,越来越多的网络设备基础架构逐步向基于通用处理器平台的架构方向融合,从传统的物理网络到虚拟网络,从扁平化的网络结构到基于 SDN 分层的网络结构,无不体现出这种创新与融合. 这在使得网络变得更加可控制和成本更低的同时,也能够支持大规模用户或应用程序的性能需求,以及海量数据的处理.究其原因,其实是高性能网络编程技术随着网络架构

后台开发知识 - DPDK知识图谱

关系图谱(请点击看超大图): 部分名词: 名词 全写 解释 备注 DPDK Data Plane Development Kit 数据平面开发套件或叫数据平面开发工具集 Intel开源 IA Intel Architecture 英特尔架构 https://www.dpdk.org/ UIO Userspace I/O 用户空间IO,运行在用户空间的I/O技术 PMD Poll Mode Driver 轮询模式驱动 Netmap 高性能网络I/O框架,竞品:DPDK http://info.ie

DPDK并行计算

参考文献: <深入浅出DPDK> https://www.cnblogs.com/LubinLew/p/cpu_affinity.html ...................................................................... 前言: 处理器提高性能主要是通过两个途径,一个是提高IPC(CPU每一时钟周期内所执行的指令多少),另一个是提高处理器的主频率.每一代微架构的调整都伴随着对IPC的提高,从而提高处理器的性能,只是提升幅度有限.但是提