服务器会消失吗?CXL与光互连如何解耦GPU、CPU和内存

CXL光互连可组合计算
于 2026-10-02 04:40:20 修改
·本内容遵循CC 4.0 BY-SA版权协议

1. 从“一台服务器”到“三个资源池”:这件事到底在解决什么问题

如果你最近两年一直在做AI基础设施相关的工作,大概率会有一种很强烈的撕裂感:一边是GPU算力永远不够用,另一边是好不容易抢到的GPU卡,实际利用率却经常跑在30%到50%之间。更让人难受的是,明明只是想把内存扩一扩,结果发现CPU、主板、机箱、电源全得跟着换一遍,整台服务器像一块焊死的铁板,动一个角就得整体重来。

这个项目标题里提到的“服务器会消失吗”,其实问的不是物理意义上的机柜会不会消失,而是在问一个更本质的问题:当GPU、CPU、内存被拆成三个可以独立扩展、独立调度、独立采购的资源池之后,我们过去那种“一台服务器就是一个整体”的思维模型,还成立吗?

我先把结论放在前面,方便你判断这篇内容值不值得往下读:服务器不会消失,但“服务器”这个词的含义会发生变化。它从一个硬件交付单元,逐渐变成一个逻辑上的资源编排单元。真正被拆掉的不是机箱,而是CPU、GPU、内存之间那种“必须同比例、同生命周期、同厂商绑定”的强耦合关系。而支撑这种拆解的关键技术,就是标题里点名的光互连和CXL。

这篇文章适合三类人看。第一类是正在做AI集群规划、算力调度、资源池化的工程师,你会在这里看到资源解耦背后的真实工程约束。第二类是做GPU驱动开发、异构计算、内存管理的开发者,你会理解为什么CXL和光互连会改变你对“内存”和“设备”的认知。第三类是对AI数据中心演进方向感兴趣的从业者,你会看到一个从“服务器中心”走向“可组合计算”的清晰路径。

我会尽量把这件事讲透,不讲空话,不堆术语,该算的地方算给你看,该踩的坑提前告诉你。

2. 为什么传统服务器架构在AI时代越来越别扭

2.1 一台服务器的“木桶效应”是怎么形成的

传统服务器的设计逻辑,本质上是一个配比固定、生命周期绑定的盒子。你买一台8卡GPU服务器,厂商给你配的是两颗CPU、一定数量的内存通道、若干PCIe插槽,GPU通过PCIe或者NVLink挂在CPU的根复合体下面。这个结构在过去十几年里非常合理,因为那时候的主流负载是Web服务、数据库、虚拟化,CPU是绝对核心,GPU只是加速卡。

但AI训练和推理把这个逻辑彻底颠覆了。现在的情况是,GPU是最贵的、最稀缺的、迭代最快的资源,CPU反而变成了“陪跑”的角色。问题在于,GPU要干活,必须通过CPU提供的PCIe通道和内存空间来喂数据。你GPU再强,如果CPU那边的内存带宽不够、PCIe通道数不够,GPU就得饿着。

这就形成了一个典型的木桶效应:整个系统的有效算力,取决于CPU、内存、GPU三者中最短的那块板。 而这三块板的迭代节奏完全不同。GPU大概一年半到两年换一代,CPU两到三年,内存和主板平台可能三到四年才大改一次。你把它们焊在一个盒子里,就意味着每次GPU升级,都要被迫接受一套可能已经过时的CPU和内存平台。

2.2 资源利用率数据背后的真相

我拿一个实际场景来算。假设你有一台典型的8卡AI服务器,配了两颗高端CPU、1.5TB内存、8张GPU。在训练一个大模型时,GPU利用率可能跑到85%以上,但CPU利用率长期在15%到25%之间,内存利用率可能只有40%。反过来,在数据预处理阶段,CPU和内存吃紧,GPU却在等数据。

这种“潮汐式”的资源需求,在单台服务器内部是无法调剂的。你没法把A服务器的空闲内存借给B服务器用,也没法把C服务器闲置的GPU算力动态分配给D服务器的任务。每台服务器都是一个孤岛,资源只能在岛内分配。

这里有个很多人忽略的点:AI集群里真正浪费的不是GPU本身,而是GPU等待数据的时间。而GPU等待数据,往往是因为CPU侧的内存带宽和I/O能力跟不上。把内存从CPU旁边“拆出来”独立成池,本质上就是在解决这个喂数据的问题。

2.3 可组合计算的核心诉求

所谓“可组合计算”,说白了就是一句话:让计算、内存、存储、加速器各自独立扩展,按需组合,用完即拆。 你需要的不是一台固定配置的服务器,而是一个资源池,里面有一堆GPU、一堆CPU、一堆内存条,调度器根据任务需求,临时把若干GPU、若干CPU核心、若干内存容量“拼”成一个逻辑服务器给任务用,任务结束就释放回去。

这个思路在存储领域其实早就实现了,SAN和NAS就是把存储从服务器里拆出来独立成池。现在要做的是把同样的逻辑搬到计算和内存上。而要做到这一点,必须解决两个物理层面的问题:一是内存怎么跨节点访问,二是GPU和CPU之间怎么高速互联。前者靠CXL,后者靠光互连。

3. CXL:把内存从CPU旁边拆出来的关键协议

3.1 CXL到底解决了什么

CXL的全称是Compute Express Link,它是一种建立在PCIe物理层之上的高速互连协议。你可以把它理解成“给PCIe加了一套内存语义”。普通的PCIe设备,CPU访问它要走DMA,要经过复杂的驱动栈,延迟高、粒度粗。而CXL设备可以被CPU像访问本地内存一样直接访问,支持缓存一致性,延迟和带宽都接近本地内存。

CXL有三个子协议,我按重要性排一下:

  • CXL.io:基本等同于PCIe,用于设备发现、配置、DMA。
  • CXL.cache:让设备可以缓存主机内存,保持一致性。
  • CXL.mem:让主机可以访问设备侧的内存,这是内存池化的核心。

内存池化靠的就是CXL.mem。一块CXL内存扩展卡插在服务器上,操作系统看到的就是一段额外的内存地址空间,应用程序可以像用本地内存一样用它,不需要改代码。而如果把这块内存卡放到一个独立的机箱里,通过CXL交换机连接多台服务器,就形成了内存池,多台服务器可以共享同一池内存。

3.2 CXL内存池的实际延迟账

很多人关心的是:CXL内存到底比本地内存慢多少?我拿公开的测试数据和一个简单的计算来说明。

本地DDR5内存的访问延迟大概在80到100纳秒。CXL内存的延迟取决于拓扑结构。如果是直连的CXL扩展卡,延迟大概在150到250纳秒。如果经过一层CXL交换机,延迟会上升到300到500纳秒。如果是跨机箱的光互连CXL,延迟可能到600纳秒到1微秒。

这个数字看起来比本地内存慢了好几倍,但你要跟什么比。如果跟NVMe SSD比,SSD的延迟是几十微秒到上百微秒,CXL内存快了两个数量级。如果跟网络访问远程内存比,RDMA的延迟也在微秒级。所以CXL内存的定位很清楚:它比本地内存慢,但比任何远程存储和网络访问都快得多,足以支撑大量对延迟不那么敏感但对容量敏感的场景。

哪些场景适合?我列几个:

  • 大模型推理时的KV Cache溢出,可以把不活跃的KV块放到CXL内存池。
  • 内存数据库的冷数据层,热数据在本地DDR,冷数据在CXL池。
  • 虚拟机内存超分,把空闲虚拟机的内存页换出到CXL池。
  • 训练时的checkpoint暂存,不需要落盘那么慢,放CXL池刚好。

3.3 CXL协议版本演进与选型建议

CXL 1.1/2.0主要支持直连和单层交换,CXL 3.0开始支持多层交换、内存共享和更复杂的池化拓扑。目前市面上能买到的CXL内存扩展卡,大多还是1.1或2.0的产品,3.0的交换机和池化方案还在早期。

如果你现在要上手做CXL内存池的验证,我的建议是:

  1. 先从单机CXL内存扩展卡开始,验证操作系统识别、延迟、带宽、应用兼容性。
  2. 再上CXL交换机,做两台服务器共享一个内存池的验证。
  3. 最后再考虑跨机箱的光互连CXL池化。

不要一上来就搞最复杂的拓扑,CXL的软件栈和运维工具链还在快速迭代,很多坑是在实际部署中才会暴露的。

注意:CXL内存池目前最大的坑不是硬件,而是操作系统的内存管理策略。Linux对CXL内存的NUMA节点划分、页迁移策略、内存回收机制都还在完善中。你可能会遇到CXL内存被识别了但应用死活不用、或者用了但性能反而下降的情况。这些后面在问题排查章节会详细讲。

4. 光互连:让GPU、CPU、内存真正“拆得开、连得上”

4.1 为什么电互连不够用了

传统服务器内部,GPU和CPU之间走的是PCB上的铜线,也就是电信号。电信号在铜线里传输,频率越高、距离越长,衰减和串扰就越严重。PCIe 5.0的速率是32 GT/s,到了PCIe 6.0是64 GT/s,电信号在PCB上的有效传输距离已经缩短到几十厘米以内。这意味着你没法把GPU放到离CPU太远的地方,更别说跨机箱了。

光互连用光纤代替铜线,用光信号代替电信号。光的优势是带宽密度高、传输距离远、抗电磁干扰。一根光纤的带宽可以轻松做到Tbps级别,传输距离从几米到几公里都没问题。这就为“把GPU、CPU、内存拆到不同机箱、甚至不同机柜”提供了物理基础。

4.2 光互连在AI集群里的三种典型用法

第一种是GPU之间的光互连。传统NVLink是铜缆,连接距离有限,一般只能在同一台服务器内或者相邻机箱之间。用光互连做GPU间通信,可以把GPU集群的规模从单机8卡扩展到跨机柜的几十卡甚至上百卡,同时保持低延迟和高带宽。

第二种是CPU与内存池之间的光互连。CXL over Optics,就是把CXL协议跑在光互连上。这样内存池可以放在离服务器几十米远的地方,通过光纤连接,延迟增加有限,但部署灵活性大大提升。

第三种是GPU与CPU之间的光互连。这是最激进的一种,把GPU从CPU的PCIe根复合体上彻底拆下来,通过光互连组成一个独立的GPU资源池,任务需要时再动态分配给CPU节点。

4.3 光互连的延迟与带宽实测参考

我拿一个典型的400G光互连链路来算。400Gbps等于50GB/s,单向延迟在光模块和交换芯片上大概增加100到200纳秒。如果做GPU间通信,相比NVLink铜缆的延迟增加大概在几十纳秒到一百纳秒级别。对于大模型训练中的All-Reduce通信,这个延迟增加会被通信量摊薄,实际影响在5%到15%之间。

但光互连带来的好处是规模。铜缆NVLink最多连8卡,光互连可以连64卡甚至更多。当你的模型大到单机8卡放不下时,光互连是唯一的选择。所以这个延迟代价是值得的。

实操心得:光互连的部署,光纤清洁和连接器质量是最大的隐形杀手。我见过太多因为光纤端面有灰尘导致误码率飙升、训练频繁中断的案例。每次插拔光纤前,务必用专用清洁工具处理端面,这个习惯能帮你省下大量排查时间。

5. 可组合计算的完整实操路径

5.1 从单机资源解耦开始验证

如果你现在就想动手验证可组合计算,不要一上来就搞跨机箱光互连。我建议的路径是:

第一步,单机CXL内存扩展。 找一台支持CXL的服务器,插一块CXL内存扩展卡,在Linux下用lspci确认设备识别,用daxctl和numactl查看NUMA节点和内存分布。然后跑一个内存带宽测试,比如mbw或者stream,对比本地DDR和CXL内存的带宽差异。

BASH
# 查看CXL设备
lspci | grep -i cxl
 
# 查看DAX设备
daxctl list
 
# 查看NUMA节点分布
numactl -H
 
# 内存带宽测试
mbw -n 10 1024

第二步,CXL内存池化。 引入CXL交换机,把两台服务器的CXL内存卡挂到同一个交换机下,配置内存池。这一步的关键是交换机的分区配置和操作系统的内存热插拔支持。你需要确认内核版本支持CXL 2.0的池化特性,目前比较稳的是Linux 6.3以上。

第三步,光互连CXL。 把CXL交换机之间的连接从铜缆换成光模块,验证跨机箱内存访问的延迟和带宽。这一步对光模块的兼容性要求很高,建议用同一厂商的端到端方案。

5.2 GPU资源池化的调度逻辑

GPU资源池化比内存池化更难,因为GPU是有状态的设备,不像内存那样可以随意分页迁移。目前主流的做法有两种:

一种是GPU直通加动态分配。物理GPU还是插在某个节点上,但通过调度器决定哪个任务用哪些GPU。任务启动时,调度器把GPU设备映射到容器或虚拟机里。任务结束后释放。这种方式实现简单,但GPU还是绑在固定节点上,没法跨节点组合。

另一种是GPU over Fabric。把GPU通过光互连暴露成网络设备,任何节点都可以远程调用GPU算力。这种方式更接近真正的资源池,但延迟和带宽损失更大,目前主要用于推理场景,训练场景还在验证中。

我个人的判断是,未来三到五年内,GPU资源池化会先从推理场景落地,因为推理对延迟的容忍度更高,而且推理的GPU利用率波动更大,池化收益更明显。训练场景因为对通信延迟极其敏感,短期内还是以单机多卡加光互连扩展为主。

5.3 调度器的改造要点

可组合计算对调度器提出了新要求。传统的Kubernetes调度器是以节点为单位的,一个Pod要么调度到A节点,要么调度到B节点。但在可组合计算里,一个任务可能需要“2个GPU来自池A,512GB内存来自池B,16个CPU核心来自池C”。调度器需要支持跨资源的组合调度。

你需要关注几个能力:

  • 资源拓扑感知:调度器要知道哪些GPU和哪些内存池之间的光互连延迟最低,尽量把任务调度到拓扑最近的资源上。
  • 动态资源绑定:任务运行时,资源是动态绑定的,任务结束后自动解绑回池。
  • 故障域隔离:一个资源池出问题,不能影响其他池上的任务。

目前CNCF生态里还没有成熟的可组合计算调度器,很多团队是在Kubernetes之上自研调度层。如果你在做这块,建议先把资源抽象层做厚,把GPU、内存、CPU都抽象成统一的资源对象,再在上面做调度策略。

6. 常见问题与排查技巧实录

6.1 CXL内存识别了但应用不用

这是最常见的问题。操作系统识别到了CXL内存,numactl -H也能看到新的NUMA节点,但应用的内存分配还是全落在本地DDR上。

原因通常是NUMA策略问题。Linux默认的内存分配策略是local,也就是优先在本地NUMA节点分配。CXL内存通常被划分成一个独立的NUMA节点,如果应用的CPU亲和性绑在本地节点,内存就只会从本地节点分配。

解决办法有两个:一是用numactl --interleave做跨节点交织分配,让内存均匀分布在本地和CXL节点上;二是用numactl --membind显式绑定到CXL节点。但要注意,--membind到CXL节点会让所有内存访问都走CXL,延迟会上升,适合对容量敏感对延迟不敏感的场景。

BASH
# 跨节点交织分配
numactl --interleave=all ./your_app
 
# 显式绑定到CXL节点(假设节点1是CXL)
numactl --membind=1 ./your_app

6.2 光互连链路误码率高导致训练中断

光互连的误码率问题往往表现为训练任务随机中断、NCCL通信超时、GPU掉卡。排查思路是:

  1. 先看光模块的DDM信息,检查收发光功率是否在正常范围。
  2. 用厂商工具做链路误码率测试,比如BERT测试。
  3. 检查光纤端面清洁度,重新清洁并插拔。
  4. 检查光模块和交换机的兼容性,固件版本是否匹配。

我踩过的一个坑是:光模块的固件版本和交换机固件版本不匹配,导致链路在低负载时正常,高负载时误码率飙升。这种问题很难查,因为日常测试跑不出问题,只有在大规模All-Reduce时才暴露。建议在部署前做满负载压力测试,至少跑24小时。

6.3 内存池化后的性能抖动

CXL内存池化后,多个服务器共享同一个内存池,会出现资源争抢。A服务器的大量内存访问可能把CXL交换机的带宽吃满,导致B服务器的CXL内存访问延迟飙升。

这个问题目前没有特别好的解决办法,只能靠QoS策略。一些CXL交换机支持带宽限速和优先级队列,可以给不同服务器分配不同的带宽配额。另外,在应用层做内存访问的错峰调度也有帮助,比如把大内存批处理任务安排在低峰期。

6.4 常见问题速查表

问题现象 可能原因 排查方向 解决思路
CXL内存识别但应用不用 NUMA策略限制 numactl -H查看节点分布 调整交织或绑定策略
光互连训练随机中断 误码率高 光功率、BERT测试 清洁端面、升级固件
CXL内存延迟波动大 带宽争抢 交换机QoS配置 限速、错峰调度
GPU池化后推理延迟上升 光互连延迟 端到端延迟测量 拓扑就近调度
内存池故障影响多节点 故障域未隔离 池化拓扑审查 增加冗余路径

7. 我对可组合计算落地节奏的判断

我在实际接触的几个AI数据中心项目里,看到的是一个渐进式的演进,而不是一夜之间的颠覆。短期内,单机内的CXL内存扩展会先落地,因为它改动最小、收益明确。中期,跨机箱的CXL内存池会在对内存容量极度敏感的场景里先用起来,比如大模型推理的KV Cache池化。长期,GPU资源池化会随着光互连成本的下降和调度器的成熟逐步铺开。

有一个细节值得注意:可组合计算对运维体系的要求比传统服务器高得多。传统服务器坏了,换一台就行。资源池里的一个CXL交换机坏了,可能影响几十台服务器的内存访问。所以冗余设计、故障域隔离、快速切换机制,这些在可组合计算里不是可选项,而是必选项。

最后分享一个我在实际部署中总结的小技巧:在做CXL内存池的容量规划时,不要按峰值需求配,要按峰值需求的70%加上热备冗余来配。因为内存池的故障切换需要时间,预留足够的缓冲容量,能在交换机或链路故障时给运维争取到切换窗口。这个比例是我踩过几次坑之后总结出来的,供你参考。

【信息科学与工程学】【数据中心】 第十九篇 MFU的优化提升方法03
本文系统阐述智算中心大模型训练中模型浮点运算利用率(MFU)的定义、多层级影响因子(GPU利用率、通信计算比、内存带宽、缓存命中率等)及组合函数方程;构建涵盖微架构、单节点、分布式系统至算法层的全栈优化框架;引入拉格朗日乘子法、梯度下降、多尺度有限元分析、代数拓扑建模等信息技术核心方法,支撑MFU监控、调度、网络墙突破与跨层协同优化;强调硬件-软件-算法联合调优对提升计算效率的关键作用。
flyair_China
973
【信息科学与工程学】【通信工程】第七十九篇 Infiniband网络02
本文系统补充了IB-D2-0047至IB-D2-0116共70个InfiniBand协议模型,涵盖物理层FEC、网络管理、传输层乱序处理与消息分割、基于速率的拥塞控制、RDMA应用接口,以及NVIDIA Quantum交换机、SHARP、NCCL over IB等关键技术。重点突出其无损低时延、原生RDMA和网络内计算(In-Network Computing)特性,依托Subnet Manager实现SDN集中管控。
flyair_China
354
【信息科学与工程学】计算机科学与自动化——第三百零五篇 数据中心 Scale-Up、Scale-Out、Scale-Across 01
本文系统分析数据中心三大核心领域(计算、存储、网络)的三种扩展架构:Scale-Up(纵向扩展)、Scale-Out(横向扩展)与Scale-Across(跨域协同扩展),重点阐述其数学建模方法、性能边界推导及适用场景对比,强调在高并发、低延迟与资源利用率优化中的关键技术权衡。
flyair_China
436
从PCIe到CXL:一个内存访问延迟的‘消失魔术’(以GPU访问主机内存为例)
Matthew_牛
硅光无中断波长选择开关:实现光互连解耦内存池的关键技术
Moriarty K
从北桥消失说起:为什么现代CPU要把PCIe Root Complex‘吞’进去?
宁静致远敏
别再傻傻分不清!从内存条到CPU缓存,一文搞懂SRAM和DRAM到底怎么选
抹茶牛奶泡芙
GPU显存迈向TB级:存储启发内存技术解析
Playmz
内存成本飙升,AI服务器涨价背后的技术逻辑与优化策略
Energetic Hydra
AI服务器内存成本上涨:HBM供货紧张与软件优化指南
ClaireCeltics
GPU加速幻觉破除指南:CPU-GPU搬运开销占总耗时68%的3种典型场景(PCIe Gen4带宽利用率<22%)、2个Zero-Copy优化临界点
SW_孙维
数据中心内存池化技术:架构、实现与选型指南
Jen Lacey
LLM推理架构革命:中间调度层的物理蒸发与GPU原生调度
凿船尸爷