三台4090服务器GPU全部PCIe降级到1.0——排查实录

6 阅读4分钟

三台4090服务器GPU全部PCIe降级到1.0——排查实录

背景:公司自建GPU集群(3台服务器,6张RTX 4090),准备把万兆网卡升级到100G/200G,顺便查了一下PCIe资源。没想到查出一个大问题——所有GPU都在以PCIe 1.0运行,带宽利用率只有8%

发现问题

起因很简单:想升级网卡,需要确认PCIe槽位够不够用。顺手查了一下GPU的PCIe状态:

sudo lspci -vvv -s <PCI地址> | grep -E "LnkCap|LnkSta"

然后看到了这个:

LnkCap: Speed 16GT/s, Width x16    # 槽位能力:PCIe 4.0 ×16,25 GB/s
LnkSta: Speed 2.5GT/s, Width x8    # 实际运行:PCIe 1.0 ×8,2 GB/s

三台服务器、六张4090,全部降级。没有一张跑在正常速度。

带宽利用率:8%

也就是说,这堆卡从买来到现在,一直以八分之一的速度跟CPU交换数据。而我之前跑的所有benchmark、部署的所有模型,全部受到这个瓶颈影响。

完整数据

服务器GPU应该是实际是带宽利用率
127GPU#0PCIe 4.0 ×16 (25GB/s)PCIe 1.0 ×8 (2GB/s)8%
127GPU#1PCIe 4.0 ×16 (25GB/s)PCIe 1.0 ×8 (2GB/s)8%
150GPU#0PCIe 4.0 ×16 (25GB/s)PCIe 1.0 ×8 (2GB/s)8%
150GPU#1PCIe 4.0 ×16 (25GB/s)PCIe 1.0 ×16 (4GB/s)16%
161GPU#0PCIe 4.0 ×16 (25GB/s)PCIe 1.0 ×8 (2GB/s)8%
161GPU#1PCIe 4.0 ×16 (25GB/s)PCIe 1.0 ×16 (4GB/s)16%

三台机器,一致性地降级到PCIe 1.0,这不可能是硬件故障。硬件坏了表现是随机的,不会这么整齐。

影响有多大?

先说结论:模型加载慢10倍以上,推理影响不大

场景影响原因
模型加载(RAM→VRAM)严重25GB/s → 2GB/s,加载一个235B模型(116GB)从5分钟变成50分钟
多卡推理(GPU间通信)严重卡间数据传输走PCIe,TP/EP模式下直接影响推理速度
单卡推理较小模型已在显存里,计算在GPU内部完成

我最关心的是多卡推理。因为大模型必须多卡,多卡就必须走PCIe(4090没有NVLink)。这意味着我之前跑的所有多卡benchmark数据,全部是"残血"状态下的结果。

排查过程

第一步:排除硬件问题

三台机器、不同批次、不同位置,全部一样 → 不是某张卡或某个槽坏了。

第二步:看Riser线缆

4090是消费级卡,服务器机箱通常通过Riser(延长线)安装。如果Riser只支持PCIe 3.0或更低,会强制降速。

检查方式:打开机箱看Riser型号和规格。

第三步:看BIOS设置(最可能的原因)

进入BIOS → Advanced → PCIe Configuration → PCIe Link Speed。

如果这里设成了Gen1,所有设备都会被限制在PCIe 1.0。

这解释了为什么三台机器表现一致——同样的BIOS配置,出厂默认或装机时人为设置。

解决方案

按可能性排序:

  1. BIOS改PCIe Link Speed为Auto或Gen4(最可能,改完立即生效)
  2. 更换PCIe 4.0 Riser线缆(如果BIOS改了还是1.0)
  3. 升级BIOS固件(最后手段)

服务器用的是海光C86处理器(AMD Zen架构授权),4路,每颗CPU提供128条PCIe 4.0通道,PCIe通道资源非常充裕。问题几乎不可能出在CPU/芯片组上。

顺便:网卡升级的结论

既然查了PCIe,也把网卡的事一起说了。三台服务器网卡槽位都是PCIe 4.0 ×16(≈25GB/s),可以直接上200G双口网卡,不需要额外扩展。

当前万兆网卡协商速度低是因为网卡本身不支持更高速度(Intel 82599只到PCIe 2.0),换卡后自动协商到满速。

下一步

修好BIOS之后,我计划用统一封装的benchmark工具跑一遍完整对比:

  • PCIe 1.0 vs 4.0 的模型加载时间
  • 单卡推理性能差异
  • 多卡TP模式下的推理吞吐量变化
  • 100G网卡升级后的集群通信性能

对比数据后续更新。


写在最后

如果你也在用GPU服务器跑大模型,强烈建议查一下PCIe状态。我这个集群跑了几个月才发现问题,之前一直以为性能就这样。

一条命令就行:

sudo lspci -vvv | grep -A2 "NVIDIA" | grep -E "LnkCap|LnkSta"

如果你的LnkCap和LnkSta差很多,那大概率也是PCIe降级了。


本人方向:电力行业AI落地,自建GPU集群,大模型私有化部署。踩坑经验持续分享,欢迎关注/交流。