DPDK是什么?一图总结:DPDK架构与原理
ccwgpt 2024-10-13 01:28 24 浏览 0 评论
DPDK架构
更多学习资料(包含视频、技术学习路线图谱、文档等)
技术点包含了C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等方面。
后台私信《资料》免费领取
DPDK使用的技术以及解决的问题
------------------
DPDK框架通过使用一些工程技术很少的解决了上述问题。
3.1 轮询采用类似网络编程中的poll模型来接收数据包,可避免中断上下文切换带来的开销
3.2 用户态驱动linux下用户态使用的技术是UIO技术,后面会做详细的介绍。在这种工作模式下,可避免不必要的内核拷贝,又避免了系统调用。一个间接的影响在于,用户态驱动不再受限于内核现有的数据格式和行为定义。
3.3 亲和性和独占DPDK工作在用户态,但是线程的调度还是依赖于内核。利用CPU的亲和性绑定,可以让指定任务运行在某个cpu逻辑核心上,避免了线程在不同核心之间频繁切换,不同核心之间切换容易导致cache miss和cache write back,从而造成性能下降。
3.4 大页内存利用大页内存可以有效的降低TLB miss,从而减少访存的开销。
3.5 软件调优比如结构体的cache line对齐比如数据在多核间访问避免跨cache line访问比如适时的预读取数据比如多元数据批量操作
3.6 充分挖掘网卡性能,使用硬件的新特性
DPDK应用示例介绍
DPDK 示例应用程序是小型独立应用程序,它演示 了DPDK 的各种功能。这些示例可以被视为 DPDK 功能的说明书。有兴趣使用 DPDK 的用户可以获取应用程序,试用这些功能,然后扩展它们以满足其需求。
1.1 DPDK应用示例
下表中列出了在DPDK源码examples目录中一些主要的应用示例。
这些示例从简单到复杂,但大多数都旨在演示 DPDK 的一个特定功能。下面将重点介绍一些更有趣的示例。
Hello World(Hello World):与大多数编程框架的介绍一样,一个好的开始是Hello World应用程序。Hello World 示例设置 DPDK 环境抽象层 (EAL),并打印一个简单的"Hello World"消息到每个启用 DPDK 的核心。此应用程序不执行任何数据包转发,但它是测试 DPDK 环境是否编译和正确设置的一个很好的方法。
基本转发框架(Basic Forwarding/Skeleton App):基本转发/骨架包含使用DPDK 启用基本数据包转发所需的最小代码量。这允许您测试网络接口是否使用 DPDK。
二层转发(Network Layer 2 Forwarding):网络第 2 层转发,或者应用程序确实基于以太网 MAC 地址进行转发,就像一个简单的交换机。l2fwd
三层转发(Network Layer 3 Forwarding):网络第 3 层转发,或应用程序确实基于互联网协议、IPv4 或 IPv6 进行转发,就像一个简单的路由器。l3fwd
数据包分发器(Packet Distributor):数据包分发器演示如何将到达 Rx 端口的数据包分发到不同的内核进行处理和传输。
多进程应用程序(Multi-process Application):多进程应用程序显示两个 DPDK 进程如何使用队列和内存池来共享信息。
RX/TX回调应用程序(RX/TX Callbacks Application) :RX/TX回调示例应用程序是一个数据包转发应用程序,演示用户在接收和传输的数据包上使用用户定义的回调。应用程序通过向 RX 和 TX 数据包处理函数添加回调来计算 RX(数据包到达)和 TX(数据包传输)之间的数据包延迟。
IPSec 安全网关(IPsec Security Gateway):IPSec 安全网关应用程序是更接近真实示例的最小示例。这也是使用 DPDK Cryptodev 框架的应用程序的一个很好的示例。
总结;
精度时间协议 (Precision Time Protocol (PTP) Client)客户端:PTP 客户端是实际应用程序的另一个最小实现。在这种情况下,应用程序是一个 PTP 客户端,它与 PTP 主时钟通信,使用 IEEE1588 协议在网络接口卡 (NIC) 上同步时间。
服务质量调度程序 (QoS Scheduler) :QoS 调度程序应用程序演示使用 DPDK 提供 QoS 调度。
相关推荐
- 迈向群体智能 | 智源发布首个跨本体具身大小脑协作框架
-
允中发自凹非寺量子位|公众号QbitAI3月29日,智源研究院在2025中关村论坛“未来人工智能先锋论坛”上发布首个跨本体具身大小脑协作框架RoboOS与开源具身大脑RoboBrain,可实...
- 大模型对接微信个人号,极空间部署AstrBot机器人,万事不求百度
-
「亲爱的粉丝朋友们好啊!今天熊猫又来介绍好玩有趣的Docker项目了,喜欢的记得点个关注哦!」引言前两天熊猫发过一篇关于如何在极空间部署AstrBot并对接QQ消息平台的文章,不过其实QQ现在已经很少...
- Seata,让分布式事务不再是难题!实战分享带你领略Seata的魅力!
-
终身学习、乐于分享、共同成长!前言Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式的...
- 常见分布式事务解决方案(分布式事务解决的问题)
-
1.两阶段提交(2PC)原理:分为准备阶段(协调者询问参与者是否可提交)和提交阶段(协调者根据参与者反馈决定提交或回滚)。优点:强一致性,适用于数据库层(如XA协议)。缺点:同步阻塞:所有参与者阻塞...
- 分布式事务:从崩溃到高可用,程序员必须掌握的实战方案!
-
“支付成功,但订单状态未更新!”、“库存扣减后,交易却回滚了!”——如果你在分布式系统中踩过这些“天坑”,这篇文章就是你的救命稻草!本文将手把手拆解分布式事务的核心痛点和6大主流解决方案,用代码实战+...
- 谈谈对分布式事务的一点理解和解决方案
-
分布式事务首先,做系统拆分的时候几乎都会遇到分布式事务的问题,一个仿真的案例如下:项目初期,由于用户体量不大,订单模块和钱包模块共库共应用(大war包时代),模块调用可以简化为本地事务操作,这样做只要...
- 一篇教你通过Seata解决分布式事务问题
-
1 Seata介绍Seata是由阿里中间件团队发起的开源分布式事务框架项目,依赖支持本地ACID事务的关系型数据库,可以高效并且对业务0侵入的方式解决微服务场景下面临的分布式事务问题,目前提供AT...
- Seata分布式事务详解(原理流程及4种模式)
-
Seata分布式事务是SpringCloudAlibaba的核心组件,也是构建分布式的基石,下面我就全面来详解Seata@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题合...
- 分布式事务最终一致性解决方案有哪些?MQ、TCC、saga如何实现?
-
JTA方案适用于单体架构多数据源时实现分布式事务,但对于微服务间的分布式事务就无能为力了,我们需要使用其他的方案实现分布式事务。1、本地消息表本地消息表的核心思想是将分布式事务拆分成本地事务进行处理...
- 彻底掌握分布式事务2PC、3PC模型(分布式事务视频教程)
-
原文:https://mp.weixin.qq.com/s/_zhntxv07GEz9ktAKuj70Q作者:马龙台工作中使用最多的是本地事务,但是在对单一项目拆分为SOA、微服务之后,就会牵扯出分...
- Seata分布式事务框架关于Annotation的SAGA模式分析
-
SAGAAnnotation是ApacheSeata版本2.3.0中引入的功能,它提供了一种使用Java注解而不是传统的JSON配置或编程API来实现SAGA事务模式的声明...
- 分布式事务,原理简单,写起来全是坑
-
今天我们就一起来看下另一种模式,XA模式!其实我觉得seata中的四种不同的分布式事务模式,学完AT、TCC以及XA就够了,Saga不好玩,而且长事务本身就有很多问题,也不推荐使用。S...
- 内存空间节约利器redis的bitmap(位图)应用场景有哪些你知道吗
-
在前面我们分享过一次Redis常用数据结构和使用场景,文章对Redis基本使用做了一个简单的API说明,但是对于其中String类型中的bitmap(位图)我们需要重点说明一下,因为他的作用真的不容忽...
- 分布式事务原理详解(图文全面总结)
-
分布式事务是非常核心的分布式系统,也是大厂经常考察对象,下面我就重点详解分布式事务及原理实现@mikechen本文作者:陈睿|mikechen文章来源:mikechen.cc分布式事务分布式事务指的是...
- 大家平时天天说的分布式系统到底是什么东西?
-
目录从单块系统说起团队越来越大,业务越来越复杂分布式出现:庞大系统分而治之分布式系统所带来的技术问题一句话总结:什么是分布式系统设计和开发经验补充说明:中间件系统及大数据系统前言现在有很多Java技术...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- express框架 (43)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (52)
- java框架spring (43)
- grpc框架 (55)
- orm框架有哪些 (43)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)