零知识学习之DPDK与RDMA(4)—— 认识DPDK(4)

接前一篇文章:零知识学习之DPDK与RDMA(3)—— 认识DPDK(3)

本文内容参考:

《Linux高性能网络详解 从DPDK、RDMA到XDP》 刘伟著 人民邮电出版社

https://blog.51cto.com/u_15301988/5181201

特此致谢!

本回继续讲解DPDK体系结构第2部分内容——轮询模式驱动。

一、认识DPDK

3. DPDK体系结构

(1)核心组件

(2)轮询模式驱动

DPDK的源码中已经包含了很多网卡的驱动程序,这些驱动程序都采用了轮询模式。

轮询模式驱动程序(poll mode driver,PMD)需要提供一系列API,用于配置设备、创建队列、发送数据包、接收数据包等。PMD直接访问接收队列和发送队列的描述符以及寄存器,无须处理任何中断(除了链路状态更新中断),即可在用户态的应用程序中快速接收、处理和发送数据包。

1)两种数据包处理模式

2)驱动程序原则

PMD应该协助上层应用达到全局目标。例如,PMD提供的接收API和发送API都要有一个参数用来表明每次最多处理多少个数据包或描述符。换一种说法,PMD需要支持burst方式,即一次性接收和发送多少个数据包。这使得使用运行到完成模式的程序可以根据具体情况,动态调整自己的收发策略。比如:

  • 以零碎的方式一次一个地接收、处理和发送数据包;
  • 接收尽可能多的数据包,然后处理所有接收到的数据包,并立即发送它们;
  • 接收给定最大数量的数据包,处理接收到的数据包并累积,最后将所有积累的数据包一次性发送出去。

3)处理器核、内存核队列之间的关系

DPDK支持NUMA 架构。当处理器核和网络接口使用本地内存时(即CPU、网卡、DDR属于同一个NUMA结点),可以获得更好的性能。因此,应该从位于本地内存的内存池中分配数据包缓存(mbuf)。

多个核不应该共享接收队列或发送队列,因为这将需要引领全局锁,从而影响性能。

4)设备配置

PMD需要提供一些API对设备进行配置,这些配置包括但不限于:

  • 重置(reset)设备为默认状态;
  • 使能或断开物理链接;
  • 初始化硬件中的数据包计数;
  • 启动/停止多播功能;
  • 使能/禁止某些硬件卸载(offload)功能,比如分片、校验等。

更多内容请看下回。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用AI学习英语

使用AI学英语可以通过与智能AI对话、模拟对话场景、提供即时反馈和个性化学习计划等方式提高学习效率和效果。然而,AI技术也存在局限性,如缺乏情感交流和真实语境,需要与真人教师结合使用。 AI学英语的基本原理和应用 AI的基本原理 AI&…

人工智能概论 | 基于A*算法的8数码问题求解

大学四年的全部课程和考试都已经结束啦! 最近闲来无事,随便发发自己的实验报告,供后面的学弟学妹们参考~ 目录 实验1 基于A*算法的8数码问题求解 1.1 程序总体流程 1.2 关键代码展示 1.3 输出结果展示及分析 1.3.1 总步数展示 1.…

Python编程学习笔记(1)--- 变量和简单数据类型

1、变量 在学习编程语言之前,所接触的第一个程序,绝大多数都是: print("Hello world!") 接下来尝试使用一个变量。在代码中的开头添加一行代码,并对第二行代码进行修改,如下: message "…

云计算【第一阶段(27)】DHCP原理与配置以及FTP的介绍

一、DHCP工作原理 1.1、DHCP概念 动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议,该协议允许服务器向客户端动态分配 IP 地址和配置信息。 DHCP协议支持C/S(客户端/服务器)结构&…

c++之命名空间详解(namespace)

引例 在学习之前我们首先了来看这样一个情形: 在c语言下,我们写了两个头文件:链表和顺序表的。我们会定义一个type(typedef int type)方便改变数据类型(比如将int改成char),来做到整体代换。 但是我们两个头文件里面…

C# 实现基于exe内嵌HTTPS监听服务、从HTTP升级到HTTPS 后端windows服务

由于客户需要把原有HTTP后端服务升级为支持https的服务,因为原有的HTTP服务是一个基于WINDOWS服务内嵌HTTP监听服务实现的,并不支持https, 也不像其他IIS中部署的WebAPI服务那样直接加载HTTPS证书,所以这里需要修改原服务支持https和服务器环…

JavaScript中,正则表达式所涉及的api,解析、实例和总结

JS中正则的api包括以下: String#searchString#splitString#matchString#replaceRegExp#testRegExp#exec 1. String#search 查找输入串中第一个匹配正则的index,如果没有匹配的则返回-1。g修饰符对结果无影响 var string "abbbcbc"; var r…

iperf3: error - unable to connect to server: No route to host

1.确认iperf3版本是否统一。 2.确认防火墙是否关闭。 关闭防火墙 : systemctl stop firewalld 查看防火墙状态: systemctl status firewalld 3.重新建起链接

(三)前端javascript中的数据结构之集合

集合的特点 1.无序 2.唯一性 3.不可重复 集合相对于前面几种数据结构,比较简单好理解,看看代码实现就能知道他的用法了 集合的创建 function MySet() {this.item {}; } MySet.prototype.has function (value) {return value in this.item; };//增 M…

Java-链表中倒数最后k个结点

题目: 输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。 如果该链表长度小于k,请返回一个长度为 0 的链表。 数据范围:0≤𝑛≤1050≤n≤105,0≤𝑎…

c#字符串常用方法

目录 1.字符串的处理常用方法 1.1 Format 1.2 IsNullOrEmpty和IsNullOrWhiteSpace 1.3 Equals 1.4 Contains 1.5 Length 1.6 Substring 1.7 IndexOf和LastIndexOf 1.8 ​​​​​​​StartsWith 和 EndsWith 1.9 ​​​​​​​Remove 1.10 ​​​​​​​Revserse…

Java---包装类与泛型

1.包装类 1.1 包装类 在Java中,由于基本数据类型不是继承Object类,为了在泛型代码中可以支持基本数据类型,Java给每个基本数据类型各自提供了一个包装类。 如下图 除了char和int基本数据类型的包装类型有点特别,其他的都是首字…

20240708 每日AI必读资讯

🤖破解ChatGPT惊人耗电!DeepMind新算法训练提效13倍,能耗暴降10倍 - 谷歌DeepMind研究团队提出了一种加快AI训练的新方法——多模态对比学习与联合示例选择(JEST),大大减少了所需的计算资源和时间。 - JE…

MySQL高级----InnoDB引擎

逻辑存储结构 表空间 表空间(ibd文件),一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。 段 段,分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollback segment),InnoDB是…

Go-Zero 框架使用 MongoDB,数据采集入库如此简单

目录 引言 环境准备 如何使用 main入口代码实现 实现采集网络接口 总结 其他资源 引言 Go-Zero 是一个高性能、可扩展的微服务框架,专为 Go 语言设计。它提供了丰富的功能,如 RPC、RESTful API 支持、服务发现、熔断器、限流器等,使开…

2024数据加密神器丨企业级透明加密软件排行榜

透明加密软件通过在操作系统层面进行底层驱动开发,对指定类型的文件进行自动透明加解密。这种加密方式对用户来说是完全透明的,用户在使用加密文件时,不会感到任何不便。同时,由于加密是在文件级别进行的,因此可以有效…

SRS流媒体服务器概述

SRS/5.0(Bee) is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and GB28181. 翻译:SRS/5.0(Bee)是一款简洁、高效、实时的视频服务器,支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DAS…

vue 启动项目报错Syntax Error: Error: PostCSS received undefined instead of CSS string

启动vue项目然后报错如下图 这个是跟node版本有关系 因为要开发不同的项目使用不同的node版本,所以就用nvm切换,所以导致了node-sass编译问题 执行这个命令就可以 npm install node-sass or npm rebuild node-sass node-sass对于node高版本和低版本切…

我与OceanBase|一位DBA老兵的国产数据库探索之旅

本文作者:尚雷,有超过十年的工作经验,目前就职于南京一家上市互联网企业,担任DBA。Oracle 11g OCM,Oracle及PG的 ACE认证,并有AWS及国产知名数据库等多项认证。他热衷于技术交流与分享,爱交友&a…

C++·栈和队列

栈和队列是什么看这里: 数据结构栈和队列-CSDN博客文章浏览阅读948次,点赞25次,收藏26次。本节讲解了栈和队列的内容,其核心就是栈的特点是后进先出,队列的特点是先进先出。并用C语言实现了栈和队列的结构以及它们的各…