远程存储 RDMA

什么是 RDMA

RDMA(Remote Direct Memory Access)指的是远程直接内存访问,这是一种通过网络在两个应用程序之间搬运缓冲区里的数据的方法。

  • Remote:数据通过网络与远程机器间进行数据传输。

  • Direct:没有内核的参与,有关发送传输的所有内容都卸载到网卡上。 

  • Memory:在用户空间虚拟内存与网卡直接进行数据传输不涉及到系统内核,没有额外的数据移动和复制。

  • Access:send、receive、read、write、atomic 等操作。

RDMA 与传统的网络接口不同,因为它绕过了操作系统内核。这使得实现了 RDMA 的程序具有如下特点:

  • 绝对的最低时延

  • 最高的吞吐量

  • 最小的 CPU 足迹 (也就是说,需要 CPU 参与的地方被最小化

RDMA 工作原理

传统的 TCP/IP 通信过程如下:

  1. 把收到的数据包缓存到系统上,数据包经过处理后,相应数据被分配到一个 TCP 连接。

  2. 接收系统再把主动提供的 TCP 数据同相应的应用程序联系起来,并将数据从系统缓冲区拷贝到目标存储地址。

由此可见在发送和接收数据的过程中,数据在源端应用层从上向下逐层拷贝封装,目的端从下向上拷贝和解封装,所以比较慢,而且需要 CPU 参与的次数很多。

RDMA 的工作过程如下:

  1. 当一个应用执行 RDMA 读或写请求时,不执行任何数据复制。在不需要任何内核内存参与的条件下,RDMA 请求从运行在用户空间中的应用中发送到本地网卡。

  2. 网卡读取缓冲的内容,并通过网络传送到远程网卡。

  3. 在网络上传输的 RDMA 信息包含目标机器虚拟内存地址和数据本身。请求完成可以完全在用户空间中处理(通过轮询用户空间的 RDMA 完成队列)。RDMA 操作使应用可以从一个远程应用的内存中读数据或向这个内存写数据。

支持 RDMA 的网络协议 

RDMA 作为一种 host-offload,host-bypass 技术,使低延迟、高带宽的直接的内存到内存的数据通信成为了可能。目前支持 RDMA 的网络协议有: 

  • InfiniBand(IB):从一开始就支持 RDMA 的新一代网络协议。由于这是一种新的网络技术,因此需要支持该技术的网卡和交换机。 

  • RDMA 过融合以太网(RoCE):即 RDMA over Converged Ethernet,允许通过以太网执行 RDMA 的网络协议。这允许在标准以太网基础架构(交换机)上使用 RDMA,只不过网卡必须是支持 RoCE 的特殊的网卡。  

  • 互联网广域 RDMA 协议(iWARP):即 Internet Wide Area RDMA Protocol,其实也就是 RDMA over TCP,允许通过 TCP 执行 RDMA 的网络协议。这允许在标准以太网基础架构(交换机)上使用 RDMA,只不过网卡要求是支持 iWARP(如果使用 CPU offload 的话)的网卡。否则,所有 iWARP 栈都可以在软件中实现,但是失去了大部分的 RDMA 性能优势。

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

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

相关文章

Android app偶发Fragment中的Button点击事件无效

1.前言 在进行app开发的过程中,在某个Tv平台开发app的过程中,会使用到Tab切换主页面的功能, 所以就需要用到Fragment来切换页面,同时在Fragment中添加点击事件的时候,有时候无 响应,接下来就分析下具体原因 2.app偶发Fragment中的Button点击事件无效的核心功能分析 Fr…

【区块链 + 人才服务】CERX- 基于联盟链的研学资源交换网络 | FISCO BCOS应用案例

CERX 是定位于面向高校科学研究与教学的分布式研学资产交换网络,构建一个用于数据、算法模型、论文和课程的研学资源价值流转平台。该平台采用 FISCO BCOS 联盟链为核心区块链层。 CERX 基于“交叉学科”的人才培养生态,围绕“科研、课件、课程、证书”…

Linux基础3-基础工具1(什么是工具,yum,vim基础)

目录 一.什么是工具 二.yum 2.1 yum基础 2.2 yum拓展 2.3 rzsz 三.vim基础 四.下章内容 1. vim 插入模式,底行模式,命令模式下详解。vim基础配置 2. gcc/g 基础 一.什么是工具 工具的本质是也是指令。通过工具我们能快速的实现某些功能 二.yum 2.1…

JVM合集

序言: 1.什么是JVM? JVM就是将javac编译后的.class字节码文件翻译为操作系统能执行的机器指令翻译过程: 前端编译:生成.class文件就是前端编译后端编译:通过jvm解释(或即时编译或AOT)执行.class文件时跨平台的,jvm并不是跨平台的通过javap进行反编译2.java文件是怎么变…

任意论文一键变播客,谷歌正式发布Illuminate,它能重构研究者的学习方式吗?

先来听一段英文播客,内容是不是很熟悉? ,时长04:27 是的,这俩人就是在聊那篇《Attention is All You Need》。在 4 分半的对话里,他们介绍了论文的核心内容,一问一答,听上去相当自然。 播客原址…

OAuth2.0和JWT

OAuth2.0 阮一峰的 理解OAuth 2.0 通俗的讲解了OAuth 2.0 的设计思路和运行流程 简单来说,OAuth(开放授权)是一种开放标准,用于允许用户在不暴露其凭据(如用户名和密码)的情况下,让第三方应用…

OPENAIGC开发者大赛企业组金奖 | 深度融合大语言模型的企业级智能文本审核系统

在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给您…

SpringBoot大学生租房平台:技术实现与市场分析

第2章 开发环境与技术 大学生租房平台的编码实现需要搭建一定的环境和使用相应的技术,接下来的内容就是对大学生租房平台用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的,是经常变动的,没有办…

[最优化方法] 《最优化方法》个人问答式学习笔记 with LLM

《最优化方法》问答式学习笔记 with LLM 文章目录 《最优化方法》问答式学习笔记 with LLM写在前面每周提问的链接表格绪论 | 第一周 | [answer by 文心一言]Q1 请为我解释一下最优化方法研究的核心重点主要是哪些?一、问题定义与建模二、求解方法三、算法性能与优化…

【Sqlite】.NET Framework使用Sqlite的注意事项

注意:NuGet引入System.Data.SQLite.Core不要引入System.Data.SQLite 注意:局域网共享链接 正常链接Data Source\\BAT-OCV\SqliteDB\batOCV.db;Version3;PoolingTrue;Max Pool Size100; 局域网链接Data Source\\\BAT-OCV\SqliteDB\batOCV.db;Version3;P…

qt怎么格式化字符串?

在Qt中,格式化字符串可以通过多种方式实现,主要依赖于你的具体需求和上下文。下面列出了一些常见的方法: 1. 使用QString的arg()方法 QString类提供了arg()方法,这个方法允许你插入值到字符串中的占位符位置。占位符由%1、%2等表…

HTML5+CSS+JS制作中秋佳节页面

HTML5CSSJS制作中秋佳节页面 中秋节,是中国民间的传统节日。每年农历八月十五庆祝。 在中秋节这一天,人们会通过各种方式庆祝,其中最重要的活动之一就是赏月。家人团聚在一起,共同欣赏明亮的月亮。同时,吃月饼也是中秋…

Delphi 12.1安卓APP开发中获取硬件信息及手机号

Demo与代码已上传到CSDN下载。 这里简单说一下代码内容,完整代码请自行下载,不清楚的欢迎留言交流。 前言 演示Demo使用了我自己开发的一个控件,TLayoutPro 《Delphi D10.3 LayoutsPro 控件简介 -避免输入焦点被虚拟键盘遮挡》请查看并下载控…

2024年【上海市安全员C证】考试题库及上海市安全员C证报名考试

题库来源:安全生产模拟考试一点通公众号小程序 2024年【上海市安全员C证】考试题库及上海市安全员C证报名考试,包含上海市安全员C证考试题库答案和解析及上海市安全员C证报名考试练习。安全生产模拟考试一点通结合国家上海市安全员C证考试最新大纲及上海…

Vue 3 + Element Plus 封装单列控制编辑的可编辑表格组件

在Web应用开发中,经常需要提供表格数据的编辑功能。本文将介绍如何使用Vue 3结合Element Plus库来实现一个支持单列控制编辑功能的表格,并通过封装组件的形式提高代码的复用性。通过本教程,你将学会如何构建一个具备单列控制编辑功能的表格组…

Vue2中使用ant-design的tab组件让他一行充满

使用tabs组件默认样式这样 想改成水平居中铺满如下: 需要改下css样式 /deep/ .ant-tabs-nav {width: 100%;& > div {width: 100%;display: flex;align-items: center;}.ant-tabs-tab {flex: 1;text-align: center;}}

为Hexo添加说说功能—Artitalk

文章目录 Artitalk部署LeanCloud配置Hexo Artitalk 基于 LeanCloud 实现的可实时发布说说/微语的 js Artitalk.js官方文档 官方文档其实讲述的很详细了,在此记录一下,方便以后维护。 另外欢迎来我的博客 火柴人儿的小站,本博客基于雨云服务器…

MongoDB延迟查询

在 MongoDB 中,查看副本集成员之间的副本延迟可以通过以下步骤进行: 使用 rs.status() 命令: 这个命令提供了副本集的详细状态信息,包括每个成员的延迟情况。在 MongoDB shell 中,你可以执行以下命令: rs.s…

斯坦福大学论文润色chat-gpt指令

Quick Prompts快速提示 To enhance text clarity-为了增强文本清晰度 As a non-native English speaker, kindly help me revise the following text for improved understand clarity. Please check for spelling and sentence structure errors and suggest alternatives.为…

15.2 JDBC数据库编程2

15.2.1 数据库访问步骤 使用JDBC API连接和访问数据库,一般分为以下5个步骤: (1) 加载驱动程序 (2) 建立连接对象 (3) 创建语句对象 (4) 获得SQL语句的执行结果 (5) 关闭建立的对象,释放资源 下面将详细描述这些步骤 15.2.2 加载驱动程序 要使…