InfiniBand技术解析:低延迟互连如何重塑分布式计算

InfiniBand技术解析:低延迟互连如何重塑分布式计算

当分布式工作负载因节点间无法快速、稳定地交换小消息而陷入停滞时,网络便成为性能瓶颈。如何破解这一难题?InfiniBand提供了一种高效的解决方案。

什么是InfiniBand?

InfiniBand是一种互连技术,它构建了连接计算、存储和加速节点的端到端通信系统。其核心是专用网络架构——通过精心设计的交换与传输层,在节点之间实现高带宽和低延迟、可预测的数据传输。

该技术专为低延迟通信而设计,具有紧凑的延迟分布和高消息速率,尤其适用于分布式训练、高性能计算(HPC)模拟以及大规模数据处理等场景。在这些环境中,中位数延迟(典型响应时间)和尾部延迟(最差响应时间,如第99百分位或P99)直接影响任务完成时间。吞吐量(系统随时间处理的工作量)通常以每秒消息数来衡量,而非仅依赖批量数据传输。

InfiniBand与传统TCP/IP有何不同?

要理解InfiniBand的实际差异化优势,可以将其模型与传统TCP/IP网络进行对比。InfiniBand并非在现有网络栈之上适配远程直接内存访问(RDMA),而是将RDMA直接集成到其传输模型中,实现主机与网络架构之间的紧密协作。关于RDMA如何消除操作系统和CPU在数据路径中的参与,从而降低延迟并提升确定性,可参考此前文章的详细解析。

本文将从技术角度深入探讨InfiniBand的工作原理,分析相较于传统网络,它在架构和操作层面的权衡,并阐述其在现代基础设施中的定位。

深入理解InfiniBand

解释InfiniBand的最佳方式是从应用程序而非网络出发。其架构围绕一个简单目标设计:让分布式系统组件能够尽可能直接、高效地进行通信。为此,InfiniBand提供应用程序可直接访问的消息服务,而不将网络视为通过操作系统中介的共享系统资源。

这从根本上区别于基于TCP/IP的设计。在传统网络栈中,应用程序依赖内核通过套接字、缓冲区和协议层移动数据。而InfiniBand移除了大部分路径:应用程序通过消息接口与网络架构交互,一旦发出请求,数据传输将在无需CPU或内核进一步参与的情况下完成。

使用InfiniBand时,应用程序直接发送和接收完整消息,这些消息被直接交付到应用内存中,而非由内核从数据包逐步重组为字节流。底层硬件负责处理分段、传输和重组,从而简化了应用程序的通信模型:提交一条消息,InfiniBand网络架构便将其传送到目标缓冲区。

其他架构特性进一步简化了通信。应用程序无需向操作系统请求网络服务,而是彼此建立直接通信通道,从而降低延迟和CPU开销。每个通道由两个端点组成,实现为“队列对”。这些队列映射到应用程序的地址空间,使其能够直接将操作提交到网络接口。操作系统仍然对分配给应用程序的虚拟地址空间执行保护和隔离,但这一执行点不在通信数据路径中。

InfiniBand消息层如何工作?

InfiniBand基于消息层构建,该层定义了端点如何通过网络架构交换数据。它公开了一组传输服务,实现了前述的延迟和吞吐量特性:

  • 可靠和不可靠的发送/接收操作,大致类似于IP网络中TCP(可靠)与UDP(不可靠)的区别
  • RDMA读写操作:远程应用程序暴露内存区域,对等方无需远程CPU介入即可直接访问
  • 原子操作:用于对共享数据结构进行协调更新
  • 多播能力:高效地向多个端点分发数据

在实际应用中,InfiniBand的编程模型基于少量明确定义的操作,这些操作直接映射到硬件能力。应用程序通过将工作请求(在InfiniBand架构中称为一组“动词”)提交到队列来与网络架构交互。术语“动词”传达其意图:表示向消息服务请求的操作。这些动词共同定义了使用InfiniBand时应用程序可用的操作,例如请求将消息传输到远程端点。

动词在架构层面指定,并构成了更高级API的基础。InfiniBand规范本身不强制要求具体的API,这些由实现提供。OpenFabrics联盟软件栈便是一个例子。该栈通过开源库(如libfabric)公开动词,并与InfiniBand硬件集成。工作请求提交后,由网络接口异步处理,完成事件会通知操作结束。

尽管InfiniBand向应用程序暴露了简单的消息模型,但其底层硬件中仍实现了完整的网络栈,包括主机通道适配器(HCA,类似于网卡)和InfiniBand交换机。传输层提供可靠性和排序保证,链路层则强制执行无损流量控制。这意味着网络架构通过确保发送方仅在接收方有可用缓冲区时才传输数据,从而防止数据包丢失。这种对网络架构的全面调度避免了重传,即使在拥塞情况下也能保持延迟可预测。

综合来看,这些设计选择创建了一个将通信视为系统组成部分而非外部服务的网络架构。应用程序直接交换消息,数据在内存区域之间移动而无需不必要的复制,并且网络强制实现可预测的行为。这也解释了为何InfiniBand始终被用于协调成本占主导地位的环境——其架构将通信开销降至最低,使得分布式系统的扩展主要取决于应用程序本身,而非网络。

InfiniBand如何支持现代分布式工作负载

大规模下的紧密协调

InfiniBand是现代数据中心网络的关键组件,因为它能提供高吞吐量和持续的低延迟。这一特性使其非常适合需要多个节点进行紧密、持续协调的环境。

高性能计算、扩展与AI通信模式

在高性能计算和大型AI基础设施中,任务被划分到数千个进程上,这些进程以细粒度交换数据。InfiniBand通过可扩展的通信模式支持这一点,使节点在集群规模增长时仍能保持同步,同时维持足够的聚合带宽。


关注微信号:智享开源,及时了解更新信息。

原文链接:https://ubuntu.com//blog/what-is-infiniband

评论列表

发表评论

你必须 登录 才能发表评论.

为您推荐


请支持IMCN发展!

谁在捐赠

微信捐赠 支付宝捐赠
微信捐赠 支付宝捐赠
ta的个人站点

发表文章4316篇

关注我的头条 不要放弃,百折不挠,坚强、自信。


扫码关注公众号:智享开源

最新科技信息


[blog_mailer_subscribe]

归档

近期评论

💬 和我聊聊