拓冰建站拓冰建站
首页 / 资讯中心 / 正文

NVLink、CXL与以太网:三种片间互联协议对比与选型指南

做服务器、做AI训练集群、甚至是做嵌入式高速通信的朋友这几年应该都有一个共同感受片间互联这个词出现的频率越来越高。以前我们聊互连基本就是PCIe顶多再争论一下万兆以太网够不够用。但现在GPU之间要高速通信内存要扩展池化多机多卡要协同训练光一个PCIe根本撑不住场面。NVLink、CXL、以太网——三个名字天天被提起但很多刚接触高性能计算的人其实分不清它们到底各自解决什么问题也搞不清楚什么时候该用哪个。这篇文章我就结合自己部署高性能集群、调优AI训练任务、折腾嵌入式以太网的实操经历把这三类主流片间互联协议掰开揉碎讲清楚。我会从协议定位、技术原理、性能参数、选型场景几个维度横向对比把那些产品PPT上不会明说的“坑”和注意事项也一并提出来。无论你是做AI基础设施、异构计算还是搞FPGA、车载以太网方向的这篇文章都值得花十分钟看完。1. 内容整体设计与思路拆解1.1 为什么片间互联突然成了系统性能的瓶颈先说一个最直观的现象。我之前在搭建GPU训练集群的时候单看每张显卡的算力A100或者H100都很猛但当多张卡协同跑大模型训练时最终吞吐量和单卡峰值算力之间存在巨大差距。这个差距的来源其实就是卡与卡之间、节点与节点之间的数据传输速度跟不上计算速度。打个比方算力是装卸货物的码头工人数量互联就是码头之间的运输通道。工人再多通道太窄货物就堵在码头上出不去。片间互联解决的就是这个“通道宽度”和“通道速度”的问题。传统上GPU和CPU之间的主互连通道是PCIe。PCIe 5.0 x16的双向带宽约为64GB/s听上去还不错但放到GPU集群里就远远不够了。一个重要的应用场景——大模型训练需要反复在GPU之间同步梯度。训练参数动辄几十上百GB如果每次同步都要通过PCIe这种级别的带宽去走整个训练过程大部分时间都在等待数据搬运。所以专门为解决这类问题而生的NVLink出现了后来针对内存扩展和缓存一致性的CXL也来了而以太网则作为最通用、最灵活的互联协议不断演进从千兆走到了400G、800G。这三者看似都在做“连接”但其设计初衷、所针对的场景、实现路径却千差万别。1.2 三种协议的能力边界与协同关系很多刚接触的人会拿NVLink和CXL去对比觉得二者是替代关系。实际上从我在实际部署中的体会来看它们的角色定位差异非常明显NVLink面向GPU之间的超高速数据交换也是NVIDIA在自家GPU集群里主推的片间互联方案主打极致的带宽和低时延它是整个AI算力集群的“内环交通网络”。CXL基于PCIe物理层但引入了缓存一致性和内存池化语义重点解决CPU与加速器、CPU与内存之间的数据一致性问题属于“内存带宽墙”的破局者。以太网通用性最强、覆盖范围最广从机架内的几米到跨数据中心的几十公里都能用。它更多承担的是“外环交通”或者“城际交通”负责节点之间的通信。需要特别强调的是这三者不是互相排斥的现实中的高性能系统往往是三者的组合。比如一台8卡GPU服务器卡间用NVLink互联CPU与GPU之间走PCIe/CXL多台服务器之间再用高速以太网组成集群。理解了这个协同关系你才能在做系统设计时做出合理的取舍。2. 核心细节解析与实操要点2.1 NVLink一脉相承的高带宽专用通道NVLink是NVIDIA推出的高速点对点互连协议最初在P100时代推出之后每一代GPU架构都会同步更新NVLink规格。从带宽演进来看NVLink一代实现约160GB/s的双向带宽第二代达到300GB/sV100第三代在A100上做到600GB/s第四代H100做到了900GB/s而到了Blackwell平台第五代NVLink每GPU双向带宽已经达到1.8TB/s的量级。这个数字是什么概念PCIe 5.0 x16的带宽约64GB/s也就是说NVLink的最新一代带宽超过PCIe 的28倍。正是这种量级的差距决定了在多卡通信密集的场景里NVLink有着不可替代的性能优势。NVLink的关键实现机制包括点对点直连GPU之间建立直接通道数据不经过CPU、不经过PCIe交换机最大限度降低转发跳数和时延。高密度线缆/PCB走线在板卡层面用极高密度的差分信号线实现短距离互连。这也是为什么NVLink只能做机内、机柜内的短距离互连没法拉太长的线。NVSwitch全互联在DGX系列服务器中NVIDIA引入NVSwitch芯片将多张GPU组成一个全互联的拓扑。任何两张GPU之间的通信都可以通过NVSwitch一跳完成通信带宽不因拓扑阻塞而打折。实操中有一个容易被忽略的细节NVLink虽然硬件上直连但最终要充分发挥性能还需要软件栈的配合。典型的如NVIDIA的NCCL库。NCCL在底层会探测GPU之间的拓扑关系如果识别到NVLink和PCIe两种链路并存它会选择最优路径来路由通信数据。如果你在做AI框架层面的性能优化一定要确认NCCL正确识别了NVLink拓扑。我遇到过不止一次因为驱动或容器环境没配好导致NCCL走了PCIe链路结果多卡训练性能直接掉一半以上。2.2 CXL内存一致性的破局者如果说NVLink解决的是“计算单元之间的数据搬运”那么CXL解决的核心问题是“内存资源的共享与扩展”。CXL的全称是Compute Express Link它建立在PCIe物理层之上但增加了一致性协议。CXL有一个非常关键的背景在传统服务器架构中内存和CPU是绑定在一起的。每颗CPU有自己直连的内存其他CPU要访问远端内存得走NUMA路径。这种架构带来的问题是内存利用率不均衡、扩展成本高昂且随着单颗CPU支持的内存通道有限内存带宽会成为系统瓶颈。CXL针对这个痛点提供了三种协议类型CXL.io基本复用PCIe的IO语义主要用于设备枚举、错误报告和配置管理。CXL.cache允许加速器以一致性方式访问CPU的内存。也就是说加速器如GPU、SmartNIC可以缓存Host内存的数据且能保证缓存一致性不用手动做Flush或者Sync。CXL.mem允许CPU以Load/Store方式直接访问设备所附带的内存这为内存扩展和内存池化提供了硬件基础。从CXL 1.1到CXL 2.0再到CXL 3.0协议的能力也在逐级扩展。CXL 2.0引入了交换和池化能力可以让多台主机共享同一组内存设备。CXL 3.0更进一步支持多层级交换和更细粒度的内存共享允许构建跨多主机的内存池。从我接触到的实际需求来看CXL对两类场景的吸引力最大。一是内存带宽敏感型应用比如数据库、内存分析、一些HPC应用。这些应用对容量需求不大但对带宽敏感通过CXL扩展内存通道可以显著提升有效带宽。二是内存利用率优化的云数据中心场景。传统方式下一个物理节点内存满了但另一个节点还有大量空闲通过CXL内存池化可以动态分配内存资源减少内存空转。CXL的落地进度有点慢原因是多方面的。一是CPU端需要新的内存控制器支持Intel的Sapphire Rapids和AMD的Genoa都是第一代支持CXL 1.1的平台但软件生态还在完善二是CXL从协议到芯片到整机验证周期长主板布线、信号完整性都是难点。如果你现在做系统选型建议关注支持CXL 2.0及以上版本的平台预留好未来升级空间。2.3 以太网从不可能到不可或缺的通用网络很多人觉得以太网太“普通”了好像跟NVLink、CXL这种高端片间互联不是一个量级。但事实上在AI集群的持续扩展中以太网扮演的角色正变得越来越重要甚至可以说是“大模型训练的中枢神经”。传统以太网走的是TCP/IP协议栈它对通用场景的适应性极强但性能实在一般。因为TCP协议要保证可靠传输引入了确认重传机制这在短距离、超低时延场景下会带来可观的额外开销。所以很长一段时间AI高性能计算集群更倾向于用InfiniBand而不是以太网。但以太网并没有就此止步。RDMA远程直接内存访问概念的引入让以太网的性能和时延大幅改善。尤其是RoCEv2RDMA over Converged Ethernet version 2的出现让标准以太网也能实现超高吞吐、超低时延的通信。RoCEv2把RDMA报文封装在UDP/IP报文里可以跨越三层网络传输同时利用ECN显式拥塞通知和PFC优先流控来保障无损传输。在实际部署中无损以太网是大模型训练集群最常见的方案之一。以太网的优势主要在三点通用性所有服务器都标配以太网口不需要额外采购专用交换机、专用线缆。扩展性从服务器内部的板载网卡到机架顶交换机到区域核心交换机以太网的拓扑规模可以扩展到成千上万个节点这是NVLink这种短距互连做不到的。成本优势相比InfiniBand和NVLink相关的专用设备以太网交换机和光模块的单价低很多且供应链成熟。以太网有Stm32等嵌入式设备的以太网配置还有车载以太网、FPGA三速以太网、25G以太网实现等等与NVLink这种封闭生态完全不同。开放与通用是以太网最大的护城河。3. 实操过程与核心环节实现3.1 从零搭建一个小型多卡互联环境纸上谈兵没有意义我在这里把一次典型的多卡互联环境搭建过程完整梳理一遍。假设你手头有4张GPU卡需要评估NVLink和PCIe互联在通信性能上的差异或者你想先搭一套基于以太网的分布式训练环境跑通后再决定是否引入NVLink。这两种场景下的操作路径完全不同。场景一验证NVLink路径先确认GPU拓扑nvidia-smi topo -m这里会显示每张GPU之间的互连类型。如果看到NVLink字样说明你的GPU和主板建立了NVLink连接如果全是PCIe说明当前环境没有启用NVLink。检查NCCL拓扑文件ls /usr/local/nccl-conf/ cat /usr/local/nccl-conf/topo.xml如果NCCL没有正确识别到NVLink拓扑可以手工指定拓扑文件一般在驱动和NCCL库都正确安装之后NCCL会自动生成并加载。跑一个简单的NCCL AllReduce测试ncu --set full --section MemoryWorkloadAnalysis ./your_app或者直接用NCCL自带的all_reduce_perf测试工具。我常用的是./build/all_reduce_perf -b 128M -e 4G -f 2 -g 4观察每个size下的busbw结果。如果多卡之间是NVLink直连通常能看到接近理论带宽的数值如果走PCIe带宽数值会明显低一个等级且时延偏高。场景二搭建以太网分布式训练环境选型建议起步用25GbE网卡在AI训练场景下效果远好于万兆。有条件直接用100GbE/200GbE更好。光模块选多模或单模取决于传输距离机架内用多模。配置IP和路由ip addr add 192.168.50.10/24 dev eth0 ip link set eth0 mtu 9000大数据包场景务必开启巨型帧MTU 9000否则带宽上不去。这是很多人第一次调RDMA时忽略的点。启用RoCERoCEv2依赖网卡驱动支持。以Mellanox网卡为例可以这样检查rdma link show如果看到roce_enabled字段为true说明RDMA功能已开启。设置ECN和PFC这需要在交换机端配合。以Mellanox交换机为例配置大概如下mlnx_qos -i eth0 --pfc0,0,0,1简单说就是给RoCE流量设置一个优先级队列并开启该队列的PFC同时给该队列设置ECN标记阈值。做完这些基础配置之后再跑RDMA带宽测试工具比如rping、ib_write_bw或者qperf比较开启PFC/ECN前后带宽和时延的变化。实测中无损配置做对了带宽可以从线速的60%提升到接近95%。3.2 以太网帧格式与抓包分析实战无论你是在做芯片验证还是网络调优学会看以太网帧都非常关键。以太网帧的基本格式是目的MAC6字节、源MAC6字节、EtherType2字节、Payload46~1500字节、FCS校验4字节。对于RDMA over Converged Ethernet外层看起来是UDP报文EtherType为0x0800IPv4IP协议号为0x11UDPUDP目的端口是RoCEv2约定好的端口号通常是4791。用Wireshark抓包时如果看到大量的UDP 4791端口的报文那基本就是RoCEv2流量。这里分享一个排查技巧。当以太网环境出现丢包时我习惯先在主机侧抓取发送方向的数据包用tcpdump抓包命令确认发送源是否正常产出报文tcpdump -i eth0 -s 96 -w send.pcap tcp port 4791然后在交换机侧看drop counter。如果主机侧报文正常但交换机侧有丢弃问题多半出在PFC流控没配合好或者ECN水线设置过低。反之如果主机侧报文就不完整那就要排查网卡驱动中断合并、DMA描述符是否耗尽的问题。以太网协议涉及到的热词很多帧序列号、三速以太网、温湿度传感器这些具体的应用我都接触过尤其是FPGA实现100G/25G以太网的场景。在FPGA上做高速以太网精髓不是把PHY的RGMII/XGMII接口跑通而是要把MAC层和DMA的中断处理优化到位。我在Zynq平台做过三速以太网10/100/1000M也在更高端的FPGA上做过25G最大的坑是FPGA的时钟频率不高但MAC层速率高缓冲设计不好就会丢帧。解决思路一般是在RX侧加FIFO缓冲并用AXI-Stream接口输出同时在数据通路里开启CRC校验错误帧直接丢弃。如果要做线速转发还得认真处理背压信号避免对端消费不及时导致数据覆盖。3.3 CXL内存模拟验证作为普通开发者现阶段还很难直接买到CXL内存设备和基于CXL的服务器。但你依然可以先做软件模拟理解CXL内存语义的工作方式。一种方式是借助QEMU的模拟支持。QEMU在较新版本中提供了对CXL设备模拟的补丁可以模拟一个Type 3 CXL内存设备。具体步骤大致如下编译带CXL支持的QEMUgit clone https://github.com/qemu/qemu.git cd qemu ./configure --target-listx86_64-softmmu --enable-cxl make -j$(nproc)启动带有CXL内存的虚拟机的命令行参数大致为-object memory-backend-file,idcxl-mem1,shareon,mem-path/tmp/cxl-mem,size4096M -device pxb-cxl,bus_nr0x60,idcxlbus0 -device cxl-rp,idrootport0,buscxlbus0 -device cxl-type3,busrootport0,memdevcxl-mem1在虚拟机内用numactl -H查看新增的内存节点。通过这种方式你可以提前验证CXL内存在NUMA策略、带宽分配上的表现也为后续在真实硬件上写驱动和应用做准备。注意QEMU模拟的CXL设备在性能上和真实硬件差距很大它更适合验证功能、测试内核驱动和业务逻辑未经过真实硬件验证的结果千万不要直接套用到生产环境。4. 常见问题与排查技巧实录4.1 NVLink性能上不去的三个典型原因NVLink作为一种专用协议一旦出现性能问题排查路径其实相对固定。我总结了自己遇到过的三种典型情况驱动和CUDA版本不匹配。很多训练框架对CUDA版本有严格要求有时你只是升级了系统内核导致内核模块重新编译后和NCCL库不匹配NVLink链路可能就没被PCIe替代。遇到性能骤降第一件事就是看nvidia-smi topo -m的输出。NCCL拓扑构建失败。在多节点训练时NCCL需要跨节点构建通信拓扑。如果节点之间的IP网络不通或者防火墙阻断了NCCL的握手端口默认是56000左右NCCL无法初始化只能回退到GLoo或其他后端性能当然拉胯。NVLink桥接器或背板接触不良。机架环境震动、长期运行后的热胀冷缩都可能导致NVLink桥松脱。显卡能点亮但NVLink带宽掉一半。建议在重启之后主动跑一遍NCCL测试不要只看nvidia-smi的输出。4.2 CXL在真实部署中的现实约束CXL虽然前景很好但现阶段实际部署还有不少“坑”固件和BIOS支持不一致。很多主板虽然宣称支持CXL但实际上还要等BIOS更新才能完整枚举CXL设备。进入BIOS后要在内存配置里打开CXL模式默认往往是关闭的。内核版本太旧导致无法识别。CXL的内核驱动从Linux 5.12左右开始逐步完善如果你用的是老内核可能连设备都看不到。解决办法是升级到较新内核版本至少5.18以上并确保CONFIG_CXL相关配置已启用。与NUMA策略的交互。CXL内存在NUMA拓扑中是作为一个新的Node出现的如果应用没有正确配置numactl策略数据访问可能落到远端节点性能不升反降。4.3 以太网调优记录让性能从60%到95%最后分享一个我记忆很深的实际调优案例。有一个训练集群所有节点配了100GbE网卡但多机训练时通信吞吐始终只有链路带宽的6成左右。当时我从三个方面逐步排查第一步排除网卡自身问题。用iperf3或qperf在裸网络上测看能否跑满带宽。测下来单条流能跑到70Gbps左右多流可以接近线速说明链路层没有大问题。第二步排除协议栈开销。把流量从iperf换成RDMA写带宽测试结果带宽依然只有75Gbps左右比理论线速低了25%。此时怀疑是无损网络配置有问题。第三步检查交换机的PFC和ECN配置。查询后发现交换机上PFC的优先级队列只配置了一个而ECN的水线设置得过低导致拥塞控制误报频繁降速。修正水线参数把ECN标记阈值调高到对应队列缓冲区深度的85%左右再重跑RDMA测试带宽提升到了94Gbps基本接近线速。这个案例里最重要的是以太网性能不只是网卡的性能而是网卡、驱动、交换机、流控策略的整体协同。任何一环不匹配都会导致整体性能大幅缩水。如果你在调试过程中发现带宽上不去不要急着怀疑硬件损坏优先检查流控和拥塞控制参数。5. 选型决策不同场景下怎么选互联方案这个问题没有标准答案但我们可以画一条清晰的边界。AI训练集群场景如果预算充足追求极致性能NVLink InfiniBand是组合拳卡间NVLink节点间InfiniBand。如果预算有限NVLink 100GbE/200GbE以太网也完全可以跑只是通信效率会低一些但在某些场景下通过减少通信频率如梯度压缩可以弥补。内存扩展和池化场景优先考虑CXL。CXL的主要价值不在于带宽有多块而在于它把内存从“设备”变为“可共享的资源”。如果你在做数据库、云原生基础设施CXL是值得重点跟踪的方向。但要注意它需要CPU、BIOS、OS、应用的全链路支持短期内不会全面普及。通用分布式系统、嵌入式系统以太网永远是安全的选择。无论是STM32这样的MCU做简单的以太网温湿度传感器还是FPGA上实现25G的高速接口以太网都有足够丰富的参考资料和生态。即使你正面对的是车载以太网这样的特殊应用场景基础协议栈和测试方法依然互通。我个人的看法是不要指望某一个协议统一所有场景。未来的计算系统一定是多协议共存的NVLink负责GPU内部的极致高速互联CXL负责内存与加速器的一致性协同以太网负责整机、整柜乃至整个数据中心的无缝连通。做架构设计的人应该关注的是这些协议如何配合形成一条高效率的数据通路而不是纠结谁取代谁。根据我个人经验做这类系统的时候最忌讳的就是“唯指标论”。NVLink带宽再高如果你只有两卡训练收益有限。CXL概念再好如果软件生态不支持也只是空中楼阁。最好的方式是从你的实际业务负载出发先用模拟或小规模实测验证再决定要不要大规模投入。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门