首页 > 其他分享 >智算集群网络拥塞原因分析及IB组网的优势

智算集群网络拥塞原因分析及IB组网的优势

时间:2024-07-31 18:39:47浏览次数:12  
标签:智算 buffer 网络 流量 拥塞 server2 IB 组网


 

智算集群网络在什么场景下会出现拥塞?CLOS网络架构(以其主要提出者Charles Clos命名,最初用于实现无阻塞的电话交换网络)是一种广泛应用于现代数据中心和高性能计算环境中的网络设计方法。智算集群建设中落地的CLOS架构主要是:Spine-Leaf网络架构。其除了支持Overlay层面技术之外;Spine+Leaf网络架构的另一个好处就是能提供了更为可靠的组网连接,因为Spine层与Leaf 层是全交叉连接,任一层中的单交换机故障都不会影响整个网络结构。

 

但由于CLOS网络架构中的many-to-one流量模型和all-to-all流量模型,智算集群中无法避免的常常出现Incast现象,这是造成智算集群网络丢包的主要原因。many-to-one流量模型

 

如上图所示,leaf1、leaf2、leaf3、leaf4 和spine1、spine2、spine3形成一个无阻塞网络。假设服务器上部署了某分布式存储业务,某个时间内,server2上的应用需要从server1、server3、server4处同时读取文件,会并发访问这几个服务器的不同数据部分。每次读取数据时,流量分别从server1到server2、server3到server2、server4 到server2,形成一个many-to-one,这里是3vs1。整网无阻塞,只有leaf2向server2的方向出端口方向产生了一个3vs1的Incast现象,此处的buffer是瓶颈。无论该buffer有多大,只要many-to-one持续下去,最终都会溢出,即出现丢包。一旦丢包,会进一步恶化影响业务性能指标(吞吐和时延)。造成many-to-one流量模型网络的根本原因,在于多个发送端往同一个接收端同时发送报文产生了多对一的Incast流量。增加buffer可以缓解问题,但不能彻底解决问题,特别是随着网络规模的增加、链路带宽的增长,增加buffer 来缓解问题的效果越来越有限。要在many-to-one流量模型下实现无损网络,达成无丢包损失、无时延损失、无吞吐损失,唯一的途径就是引入拥塞控制机制,目的是控制从many到one的流量、确保不超过one侧的容量,如下图所示。

 

为了保证不出现buffer溢出而丢包,交换机leaf2必须提前向源端发送信号抑制流量,同时交换机必须保留足够的buffer以在源端抑制流量之前接纳报文,这些操作由拥塞控制机制完成。当然,这个信号也可以由服务器server2分别发给server1、server3和server4。因为信号有反馈时延,为了确保不丢包,交换机是必须有足够的buffer以在源端抑制流量之前容纳排队的流量,buffer机制没有可扩展性,这意味着除了拥塞控制机制之外,还需要链路级流量控制。

 

all-to-all流量模型

 

如上图所示,leaf1、leaf2、leaf3 和 spine1、spine2、spine3形成一个无阻塞网络。假设服务器上部署了某分布式存储业务,server1与server4是计算服务器,server2与server3是存储服务器。当server1向server2写入数据、server4向server3写入数据时,流量分别从server1到server2、server4到server3,两个不相关的one-to-one形成一个all-to-all,这里是2vs2。整网无阻塞,只有spine2向leaf2的方向出端口方向是一个2vs1的Incast流量,此处的buffer是瓶颈。无论该buffer有多大,只要all-to-all持续下去,最终都会溢出,即出现丢包。一旦丢包,会进一步恶化影响吞吐和时延。造成all-to-all流量模型网络的根本原因,在于流量调度进行路径选择时没有考虑整网的负载分担使多条路径在同一个交换机处形成交叉。要在all-to-all流量模型下实现无损网络,达成无丢包损失、无时延损失、无吞吐损失,需要引入负载分担,目的是控制多个one到one的流量不要在交换机上形成交叉,如下图所示,流量从server1到spine1再到server2、从server4到spine3再到server3,整网无阻塞。

 

事实上,报文转发、统计复用就意味着有队列、有buffer,不会存在完美的负载分担而不损失经济性。如果采用大buffer吸收拥塞队列,则成本非常高且在大规模或大容量下无法实现,比如这里单纯使用大buffer保证不丢包,spine2的buffer必须是所有下接leaf的buffer总和。为了整网不丢包,除了buffer以外,还得有流量控制机制以确保点到点间不丢包。如下图所示,all-to-all流量模型下,采用的是“小buffer交换机芯片+流量控制”,由小buffer的spine2向leaf1和leaf3发送流量控制信号,让leaf1和leaf3抑制流量的发送速率,缓解spine2的拥塞。

 

拥塞控制是一个全局性的过程,目的是让网络能承受现有的网络负荷。解决网络拥塞,往往需要交换机、流量发送端、流量接收端协同作用,并结合网络中的拥塞反馈机制来调节整网流量才能起到缓解拥塞、解除拥塞的效果。

 

智算集群IB组网的优势

InfiniBand(也称为“无限带宽”,缩写为 IB)是一个用于高性能计算的计算机网络通信标准,它具有极高的吞吐量和极低的延迟,可用于服务器与服务器之间的数据互连、服务器与存储系统之间的直接或交换互连、以及存储系统之间的互连。IB实现了无丢包传输,不会因缓冲区溢出而丢失数据;支持端点之间的拥塞通知,类似于TCP/IP中的ECN;提供卓越的服务质量,允许对某些类型的流量进行优先处理,降低延迟,防止丢包等能力。随着人工智能的兴起,IB成为GPU服务器的首选网络互连技术。那么IB组网在智算集群环境中具有哪些优势?1. 高带宽IB网络提供高带宽的数据传输能力,通常支持数百Gb/s甚至更高的带宽,取决于网络设备和配置。高带宽使得节点之间可以以高速进行数据交换,适用于大规模数据传输、并行计算和存储系统等应用。

 

2. RDMA技术加速计算的一个关键技术,是CPU卸载,让IB网络架构可以以最少的CPU资源来传输数据,实现方式如下:
  • RDMA技术,把一台服务器内存中的数据直接写入另一台的内存,不需要CPU的参与

 

  • GPU Direct技术,可以直接访问GPU内存中的数据,将GPU内存中的数据传输到其他节点

 

3. 低延迟IB网络以其极低的延迟而著称。RDMA零拷贝网络减少了操作系统开销,使得数据能够在网络中快速移动,网络延迟可低质0.7微秒。

 

4. 扩展性IB网络具有出色的可扩展性,适用于构建大规模计算集群和数据中心。它支持多级拓扑结构,如全局互连网络、树状结构和扁平结构,可以根据应用需求和规模进行灵活配置和扩展。此外,IB网络还支持多个子网的互连,使得不同子网之间的节点可以进行通信和数据交换。IB支持多种网络拓扑:

 

规模较小时,建议选用2层fat-tree;更大规模可以采用3层fat-tree的组网拓扑;一定规模以上,可以采用Dragonfly+的拓扑节约一部分成本。

 

5. 网络稳定性和弹性长期运行的网络不可避免的会出现一些故障,NVIDIA IB解决方案提供一个机制,叫做Self-Healing Networking的自愈网络,它是基于IB交换机的硬件能力。自愈网络可以让链路故障恢复的时间仅仅需要1毫秒,比普通的恢复时间快5000x倍。

 


在 AI 发展的浪潮中,我们深知强大算力对于推动 AI 创新的关键作用。英智未来专注于提供高效、稳定、灵活的算力租赁服务,助力您的 AI 项目飞速发展。

无论您是科研机构、创新企业还是个人开发者,英智未来的算力租赁都能为您量身定制解决方案,让您无需为高昂的硬件投入和复杂的运维烦恼,轻松拥抱 AI 新时代!



标签:智算,buffer,网络,流量,拥塞,server2,IB,组网
From: https://www.cnblogs.com/ai2nv/p/18335228

相关文章

  • Ansible内置模块之file
    RHCE9.0 (点击查看课程介绍) 上课课时:72课时/12天+考试辅导1-2天开班频率:2个月开一期最新新班:7月27日周末班上课方式:面授/直播;提供随堂录播ansible.builtin.file模块用于管理文件和目录的属性。可以创建、删除文件或目录,修改文件权限、所有者等属性。01 选......
  • Profibus转EtherCAT协议转化网关(功能与配置)
    如何能够把Profibus和EtherCAT通讯连接起来?这几天有几个客户朋友咨询到这个问题,作者在这里统一为大家回复一下。想要解决这个问题其实也非常简单,只需要用到一个设备,名为JM-DPM-ECT。下面作者为大家详细讲解一下该设备的主要功能及详细配置方法。一,设备主要功能捷米特JM-DPM-......
  • Ribbon
    一.Ribbon简介Ribbon是Netflix公司实现的一套基于HTTP、TCP的客户端负载均衡的工具。SpringCloud已将其集成到spring-cloud-netflix中,实现SpringCloud的服务调用、负载均衡。用于在微服务架构中管理服务间的通信。它能够实现动态的服务发现和负载均衡,从而提高系统......
  • matplotlib 光标在图表上的错误位置
    在下面的程序中,我想将2个垂直光标放置在x轴上的2个定义位置处。问题在于,正如您在屏幕截图中看到的那样,光标与“curseur1”和“curseur2”字段中选择的值不匹配此外,当放置光标时,x轴(比例)的值会消失。当删除光标时,通过取消选择“Curseurs”按钮,光标的值保留在axx上.........
  • pytorch中保证代码复现的随机种子设置(Reproducibility)
    pytorch中保证代码复现的随机种子设置(Reproducibility)关注B站可以观看更多实战教学视频:hallo128的个人空间1.代码复现的必要性代码是用来设置整个笔记本的种子,以保证每次运行时得到相同的结果,实现结果的可重现性。首先,使用numpy和random库设置种子,然后使用torch库设置......
  • 如何使用 Schiene py lib 取消火车
    我使用Python创建了一个火车项目,但在使用DB时间表API时遇到了一些问题。是否可以通过API请求获取已取消的列车?我不这么认为。此外,火车延误也不包括在内。我使用了一个名为“schiene”的Python库来获取火车晚点情况。“Schiene”与此站点交互:https://mobile.bahn.......
  • 有没有办法获得最后的 Matplotlib 图?
    我有一个前端调用一个名为streamlit的包,如果我调用该函数,它将生成最新的Matplotlib对象st.pyplot()但是,我想获得实际的fig对象,因为我想单独存储。我面临的问题是fig是由另一个名为Pandasai的包创建的。(即,我从来不需要导入matplotlib包)。所......
  • 解决报错“AttributeError: ‘Collection‘ object has no attribute ‘model_fields
    在运行python文件时代码报错:这个错误是由于我们尝试访问一个对象的属性或方法,但该对象并不具备该属性或方法。在这种情况下,我们需要检查你的代码,确保正在访问的对象确实具有尝试访问的属性或方法。但是根据经验!这种(havenoattribute的报错问题)经常是因为版本问题,版本更新以......
  • IDEA 字节码工具 jclasslib bytecode viewer
    IDEA字节码工具jclasslibbytecodeviewer 1.下载安装 首先我们在IDEA的插件市场中搜索jclasslibbytecodeviewer和进行下载安装,安装过后根据IDEA版本的不同,可能需要重启才能使用。   2.使用 下载安装过后,在我们的项目中,首先先将整个项目进行编译,编译的......
  • Matplotlib 将值从数千缩小到 1
    我从一个名为car_data:importpandasaspdclassCar:def__init__(self,make,year,price,mileage,color,buy_rate):self.make=makeself.year=yearself.price=priceself.mileage=mileageself.colo......