DPDK EAL

news2024/11/18 23:38:57

DPDK全程是Intel Data Plane Development Kit,是一个数据平面开发集。

DPDK的主要思想

  1. 绕过内核,实现Zero Copy
  2. 使用UIO驱动屏蔽硬中断,并采用PMD主动轮询,减少Cache Miss和切换上下文的开销
  3. 使用大页内存,减少TLB Miss
  4. 减少共享,降低锁竞争产生的开销
  5. 数据主动预加载,在访问随机数据前将其主动推送至Cache,降低Cache Miss。
  6. 为线程绑定固定的CPU,提高CPU亲和性。避免任务切换的开销。

在这里插入图片描述
DPDK整体架构及依赖关系
在这里插入图片描述

EAL

EAL(Environment Abstraction Layer),环境抽象层。在使用dpdk之前,需要指定其使用的具体环境,根据环境编译对应的库文件。是所有DPDK组件实现的基础。
应该可以这样理解,EAL的作用就是将许许多多底层资源的操作以及一些常用的功能例如日志、计数器等抽象包装成一个个接口,以实现调用。
在程序开始运行之前,所有硬件资源都会围绕core构成一个个unit,每个unit都可以完成数据包处理操作。
整个程序中不支持调度,即不支持中断,因为这回显著降低效率。所有任务都通过poll方式实现。
DPDK为使用人员提供了两种处理模型,一种是RTC模型,一种是pipeline模型。
pipeline模型中核分为rx核和tx核,rx核负责从网卡收包、初步解析、以及分发给对应的tx核。
rtc模型则是一个数据包从收取到发送全部使用同一个核。
TGW EIP使用的是RTC模型,因为EIP是无状态网关,不需要保留连接信息,所有数据包被每个核处理都是等价的,使用RTC模型效率更高。
TGW LD使用的是pipeline模型,因为LD需要保存连接信息,同一个流的出入包需要被同一个转发核处理,而TGW使用的是GRE封装,连接信息可能在外层IP、内层IP、甚至在GRE头中,目前的智能网卡分流无法满足我们的需求,因此需要rx核进行分流,再由tx核进行转发。
在这里插入图片描述
DPDK初始化及启动流程

内存分配:动态分配和传统分配两种模式,其中动态模式只在Linux中支持。动态模式使用rte_malloc分配内存,并在使用后通过rte_free释放。

日志:

lcore是一个EAL线程的另一种称呼,一个lcore可以绑定一个或多个CPU,为了提高运行效率,lcore与CPU通常为一对一绑定关系,因此一个lcore_id也可以视为一个CPU id。

lcore与CPU的绑定:
–lcores=’<lcore_set>[@cpu_set] [ ,<lcore_set> [@cpu_set], …] ’

例如:
–lcores=‘1,2@(5-7),(3-5)@(0,2),(0,6),7-8’ which means start 9 EAL thread;
lcore 0 runs on cpuset 0x41 (cpu 0,6);
lcore 1 runs on cpuset 0x2 (cpu 1);
lcore 2 runs on cpuset 0xe0 (cpu 5,6,7);
lcore 3,4,5 runs on cpuset 0x5 (cpu 0,2);
lcore 6 runs on cpuset 0x41 (cpu 0,6);
lcore 7 runs on cpuset 0x80 (cpu 7);
lcore 8 runs on cpuset 0x100 (cpu 8).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63001.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重磅:Docker Desktop正式集成WasmEdge。后者首登GitHubTrending

上周五&#xff0c;Docker Desktop 发布了 4.15 新版本。在这个版本中&#xff0c;Docker Desktop 正式集成了 WasmEdge 的 containerd shim&#xff0c; 并且 Docker Wasm 也从 tech preview 进入到了 beta 阶段。这意味着&#xff0c;1000 万 Docker Desktop 的用户都安装了…

代码安全与质量 | 在这个充满变数的时代,花小钱办大事

在这个充满变数的时代&#xff0c;许多企业都想要提升效率&#xff0c;但如何以同样的时间、人力成本创造出更大的价值&#xff1f;在研发领域&#xff0c;企业选择引入更好的工具来帮助交付高质量代码&#xff0c;比如Sonar&#xff0c;帮助团队充分利用时间&#xff0c;专注于…

Gradle 使用maven本地仓库 带来的思考

Gradle 使用maven本地仓库 带来的思考 本篇主要探究一下 在使用Gradle 的时候一般会配置 maven 的本地仓库的,那是不是Gradle 可以直接使用 maven本地仓库的jar呢 ? 下面来探究一下 思考 当我们在使用Gradle的时候 一配置一个 mavenLocal() 代表它会使用maven的本地仓库, 此时…

独立产品灵感周刊 DecoHack #040 - Google公布2022年度最佳应用榜单

本周刊记录有趣好玩的独立产品设计开发相关内容&#xff0c;每周发布&#xff0c;往期内容同样精彩&#xff0c;感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到&#xff0c;建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。&#x1f4bb; 产品推荐 1. Sensei 这是一…

408真题-2021

死去的记忆正在攻击我&#xff1a; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n7aXxWnx-1670222893563)(https://waite1-1307752947.cos.ap-nanjing.myqcloud.com/img/202212051447504.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保…

网络编程之NIO 基础

一. NIO 基础 non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream&#xff0c;它就是读写数据的双向通道&#xff0c;可以从 channel 将数据读入 buffer&#xff0c;也可以将 buffer 的数据写入 channel&#xff0c;而之前的 st…

数据结构与算法之Python实现——栈

在常用的数据结构中&#xff0c;有一批结构被称为容器——栈与队列。 本篇博客主要学习一下栈这种结构的特性&#xff0c;以及用python实现它的相关操作。 内容 顺序栈链栈栈的实际应用 在这之前&#xff0c;我们需要了解一下什么是栈&#xff0c;以及栈这种结构有什么用处&am…

HarmonyOS/OpenHarmony应用开发-DataAbility开发体验

场景介绍 基于Data模板的Ability&#xff08;以下简称“Data”&#xff09;&#xff0c;有助于应用管理其自身和其他应用存储数据的访问&#xff0c;并提供与其他应用共享数据的方法。Data既可用于同设备不同应用的数据共享&#xff0c;也支持跨设备不同应用的数据共享。 Dat…

使用vuedraggable实现拖拽式操作实战

背景 先说下需求&#xff0c;为了提升开发效率和降低开发成本和技术难度&#xff0c;采用低代码方式&#xff0c;通过配置来生成代码&#xff0c;算是代码生成器的升级版解决方案。 对于前端页面&#xff0c;某个业务实体&#xff0c;如系统参数&#xff0c;常见的菜单对应一…

Memcached 未授权访问漏洞验证

Memcached 是一个高性能的分布式内存对象缓存系统&#xff0c;用于动态Web应用以减轻数据库负载。 该服务的端号为&#xff1a;11211 使用绿盟漏洞扫描系统发现某服务器存在Memcached 未授权访问漏洞&#xff0c;如下图所示。 验证方法一&#xff1a; 使用nmap 脚本script-…

ADSP-21489的开发详解:Norflash的编程和烧写

编者的话 Flash 编程与烧写&#xff0c;原本应该是开发的最后一步&#xff0c;当所有程序都做好了&#xff0c;在线编译运行正常&#xff0c;才会通过 Flash 编程&#xff0c;生成二进制的可执行文件 LDR&#xff0c;再通过 JTAG 仿真器将 LDR 文件烧写到 Flash 中&#xff0c…

初探 Vue3 新特性

在本讲中&#xff0c;我们只会概述性的来介绍一下 Vue3 中新增的一些主要内容&#xff0c;而这些主要知识点的详细的使用和功能以及作用&#xff0c;我们会在后面的课程里面逐渐的给大家去解锁。那么明确好了我们的学习目标之后呢&#xff1f; 我们来看一下 Vue3 之中到底新增…

Docker---Docker-compose 安装部署 zentao 禅道

Docker-compose 安装部署 zentao 禅道 目录Docker-compose 安装部署 zentao 禅道一、环境准备1.更换国内源2.拉取zentao的docker镜像3.关闭防火墙4.安装启动docker、docker-compose二、通过yml文件进行部署一、环境准备 1.更换国内源 CentOS7 Base源&#xff1a; wget -O /et…

技术男的春天:小姐姐求助暖男分析

时光荏苒&#xff0c;这个故事发生在4年前&#xff0c;那时候我头发可真厚&#xff0c;坐地铁也不用戴口罩。 小姐姐求助 友圈一位要做毕设的小姐姐在求助postman怎么用&#xff0c;我就帮她解答了一下。 我知道她并非计算机相关专业&#xff0c;所以很奇怪为什么要用postma…

web安全渗透

自己模拟的环境,要的私信 Web安全渗透 1、通过URL访问http://靶机IP/1,对该页面进行渗透测试,将完成后返回的结果内容作为flag值提交; 修改源码maxlength对应的数值,3+16=19输出的数值是两位数,然后修改完之输入

HTML+CSS+JS网页设计期末课程大作业—— 绿色化妆品HTML+CSS+JavaScript

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Windows搭建web站点:为站点配置二级子域名 2-2

在上一篇文章《Windows搭建Web站点&#xff1a;免费内网穿透发布至公网 1/2》中&#xff0c;我们成功通过cpolar将内网web站点发布到公网可访问&#xff0c;但免费使用cpolar所生成的域名是随机变化的&#xff08;24小时后会变化&#xff09;&#xff0c;这只适合临时测试使用。…

Mysql SQL优化跟踪来看看是如何优化并决策使用哪个索引或者不适用索引

背景 使用索引字段进行筛选数据时&#xff0c;explain查询语句发现MySQL居然没有使用索引&#xff0c;产生疑问&#xff0c;因此决定调查清楚为什么会不用索引&#xff0c;而是走全表扫描 原因调查出的结果是当你要查询的数据量是连续又占整个表五分之一以上那就不会走索引了&a…

Java面试宝典.exe程序成功运行,经典 Java 万字笔记,查漏补缺,备战跳槽面试

现在 java 的面试真的卷到家了&#xff0c;面试前很有必要针对性的多刷题&#xff0c;大部分童鞋实战能力强&#xff0c;理论不行&#xff0c;面试前不做准备很吃亏。这里整理了很多常考面试题&#xff0c;希望对你有帮助。 耗时一个月&#xff0c;我把牛客网上最火的 Java 面…

ZMQ之共享键值缓存(克隆模式)

发布-订阅模式和无线电广播有些类似&#xff0c;在你收听之前发送的消息你将无从得知&#xff0c;收到消息的多少又会取决于你的接收能力。让人吃惊的是&#xff0c;对于那些追求完美的工程师来说&#xff0c;这种机器恰恰符合他们的需求&#xff0c;且广为传播&#xff0c;成为…