【RDMA】学习笔记(二)

一.DMA

RDMA(Remote Direct Memory Access)在概念上是相对DMA(Direct Memory Access,直接内存访问)而言的。我们先来了解一下DMA.

DMA(Direct Memory Access)是一种允许外设(如硬盘、网络卡)直接访问系统内存的技术,而不需要 CPU 介入。这种方式可以提高数据传输的效率,减少 CPU 负担,降低延迟。DMA 控制器负责在内存和外设之间传输数据,允许设备和内存之间的高速数据交换,而 CPU 可以继续执行其他任务。

1.工作原理

1.初始化:首先,CPU会设置DMA传输,包括源地址、目的地址、传输的数据量以及任何必要的控制信息。 

2.传输控制: DMA控制器接管数据传输过程。它直接从源地址读取数据,并将数据写入目的地址,过程中不经过CPU。

3.中断: 一旦数据传输完成,DMA控制器会向CPU发送一个中断信号,通知CPU数据已经准备好或者已经传输完成。这样,CPU就可以处理其他任务或者继续处理传输的数据。

总的来说,在这种方式中, DMA 控制器从CPU 完全接管总线的控制,数据交换不经过CPU,而直接在内存和IO设备之间进行。DMA工作时,由DMA 控制器(DMAC)向内存发出地址和控制信号,进行地址修改,对传送字的个数计数,并且以中断方式向CPU 报告传送操作的结束。

CPU只在初始化和结束时参与。理解:CPU找了一个助理,开始时布置任务,托管了从外设收集数据的工作,助理工作完成后就向老板(CPU)汇报

2.分类

Burst Mode DMA: 在这种模式下,DMA控制器一次传输整个数据块,直到整个传输完成或达到预设的数据量。
Cycle Stealing Mode: DMA控制器在需要时“偷取”一个或几个周期来执行数据传输,介于CPU周期之间,从而减少对CPU性能的影响。
Transparent DMA: 在这种模式下,DMA传输在CPU闲置时进行,充分利用系统资源,而不干扰CPU的正常工作。

二.RDMA

1.基本原理

上回说到(见【RDMA】学习笔记(一)),传统的网络通信数据发送的流向是应用程序->操作系统内核->网卡->网络->目的设备,而在RDMA中,数据流向是:应用程序->RDMA硬件->网络->远程设备,如下图:

这张图也可以看一下:

DMA技术中,外部设备能够绕过CPU直接访问host memory。两个或多个计算机也这样在通信的时候使用DMA,(DMA硬件将数据)从一个主机的内存直接读写到另一个主机的内存,就是远程的DMA技术,即RDMA(R=remote)

2.优势

零拷贝(Zero-copy): 应用程序能够直接执行数据传输,在不涉及到网络软件栈的情况下。数据能够被直接发送到缓冲区或者能够直接从缓冲区里接收,而不需要被复制到网络层。
内核旁路(Kernel bypass) - 应用程序可以直接在用户态执行数据传输,不需要在内核态与用户态之间做上下文切换。
不需要CPU干预(No CPU involvement) - 应用程序可以访问远程主机内存而不消耗远程主机中的任何CPU。远程主机内存能够被读取而不需要远程主机上的进程(或CPU)参与。远程主机的CPU的缓存(cache)不会被访问的内存内容所填充。
消息基于事务(Message based transactions) - 数据被处理为离散消息而不是流,消除了应用程序将流切割为不同消息/事务的需求。
支持分散/聚合条目(Scatter/gather entries support) - RDMA原生态支持分散/聚合。也就是说,读取多个内存缓冲区然后作为一个流发出去或者接收一个流然后写入到多个内存缓冲区里去。

3.RDMA三种不同的技术实现

RDMA支持多种协议,主要包括InfiniBand (IB)、RDMA over Converged Ethernet (RoCE)以及Internet Wide Area RDMA Protocol (iWARP),它们都可以使用同一套API来使用,但它们有着不同的物理层和链路层

协议明天再细细学吧,困...这三个协议详情下一篇一定会特别认真的写!

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习 RDMA(Remote Direct Memory Access)可以通过以下方法进行: 1. 学习基本概念:了解 RDMA 的基本概念和工作原理,包括 RDMA 网络架构、RDMA 传输协议(如 InfiniBand、RoCE 等)、RDMA 操作模型和数据传输过程等。 2. 阅读文档和规范:查阅相关的 RDMA 文档和规范,包括官方文档、标准规范和协议说明。这些文档可以提供关于 RDMA 的详细信息和技术细节。 3. 参考教材和教程:有一些专门的书籍和教程介绍了 RDMA 技术,包括 RDMA 的原理、设计和实现。可以通过阅读这些教材来深入了解 RDMA。 4. 参加培训和课程:参加相关的培训课程或在线学习平台上的课程,了解 RDMA 的基本原理和应用实践。这些课程通常会提供理论讲解、案例分析和实验演示等。 关于 RDMA 的拥塞算法现状及演进方向,以下是一些常见的拥塞算法和发展趋势: 1. 基于随机早期检测(Random Early Detection, RED)的拥塞控制算法:RED 算法是一种基于随机策略的拥塞控制算法,通过在网络节点上监测队列长度,并根据队列长度的阈值来丢弃或标记数据包,以减少网络拥塞。RED 算法可以应用于 RDMA 网络中,以实现拥塞控制。 2. 基于传输控制协议(Transmission Control Protocol, TCP)的拥塞控制算法:TCP 是一种常见的传输层协议,具有强大的拥塞控制机制。在 RDMA 网络中,可以借鉴 TCP 的拥塞控制算法,如 TCP Vegas、TCP New Reno 等。 3. 基于反馈和控制论的拥塞控制算法:近年来,一些研究提出了基于反馈和控制论的拥塞控制算法,如 Proportional Integral (PI) 控制器、Model Predictive Control (MPC) 等。这些算法可以根据网络状态和性能指标进行动态调整,以实现更精确和高效的拥塞控制。 4. 数据中心拥塞控制算法:随着数据中心规模的增大和应用负载的复杂化,数据中心网络的拥塞控制成为一个重要问题。一些新的拥塞控制算法针对数据中心网络特点进行优化,如 DCTCP、Homa 等。这些算法通过优化拥塞信号传输和调度策略,以提高数据中心网络的性能和吞吐量。 未来 RDMA 拥塞算法的发展方向可能包括以下几个方面: 1. 更精确和动态的拥塞控制:研究人员正在探索更精确和动态的拥塞控制算法,以适应不同网络环境和负载的变化。 2. 机器学习和人工智能在拥塞控制中的应用:机器学习和人工智能技术的发展为拥塞控制提供了新的思路和方法。未来可能会有更多基于机器学习的拥塞控制算法被提出和应用。 3. 跨层次优化:拥塞控制不仅仅局限于传输层,还需要考虑与其他网络层次(如网络拓扑、路由选择等)的协同优化,以实现更高效的拥塞控制。 4. 针对特定应用场景的优化:不同应用场景对网络性能和延迟要求不同,可能需要定制化的拥塞控制算法来满足特定需求。 为了更深入了解 RDMA 的拥塞算法现状和演进方向,建议阅读相关的学术论文、专业期刊和会议论文,以及参考相关的研究报告和技术博客。同时,参与学术会议和研讨会也是了解最新研究动态和交流学习的好途径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值