双卡2080Ti跑大模型:PCIe带宽是瓶颈吗?一次深度实测

本文最后更新于 2026年6月5日 早上

玩本地大模型的玩家,几乎都会遇到一个灵魂拷问:双卡之间到底该怎么连?PCIe x4 够不够用?要不要上 NVLink?要不要换主板?

我的配置是两张 RTX 2080 Ti 22GB 魔改版,跑 Qwen3.6-35B-A3B(MoE 架构,35B 总参数,3B 激活),实测生成速度 105 t/s。这个速度在同类配置中算不错,但我一直想搞清楚:还能更快吗?瓶颈到底在哪?

我的硬件配置

先交代一下家底:

组件 型号 备注
CPU AMD Ryzen 7 5700G 8核16线程,Zen3
主板 MSI MAG B550M MORTAR mATX,AM4
GPU 0 RTX 2080 Ti Rev.A 22GB(魔改) PCIe x16 Gen3
GPU 1 RTX 2080 Ti 22GB(魔改) PCIe x4 Gen3
显存 44GB (22GB × 2) 无 NVLink
模型 Qwen3.6-35B-A3B-MTP Q4_K_M MoE 架构

B550M 主板的第二条 PCIe 插槽只有 x4 通道,这是很多 mATX 玩家的痛点。两张卡之间没有 NVLink,跨卡通信需要走 CPU 中转(PHB 拓扑)。

实测速度:三个阶梯

我用 llama.cpp 做了系统测试,同一模型在不同配置下的生成速度:

配置 生成速度 相对单卡提升
单卡 2080 Ti 22GB 73 t/s 基准
双卡 tensor-split 0.6/0.4 93 t/s +27%
双卡 + MTP 推测解码 105 t/s +44%

三个关键观察:

  1. **单卡变双卡,提升约 27%**——远低于理论上的近 100%
  2. **MTP 只额外提升了 13%**——远低于论文宣称的 30-50%
  3. 双卡效率只有 45%——一半的算力被浪费了

问题来了:这 55% 的浪费,是谁造成的?

压力测试:30 轮连续请求

为了定位瓶颈,我写了一个压力测试脚本,向模型服务器连续发送 30 个不同类型的请求(知识问答、代码生成、数学推理、创意写作等),同时用 nvidia-smi dmon 以每秒一次的频率采集 GPU 全链路指标。

测试结果非常稳定:

1
2
3
成功: 30/30, 失败: 0
生成速度: 平均 100.9 t/s, 中位数 106.8 t/s
最小: 73.8 t/s, 最大: 112.8 t/s

接下来逐项分析监控数据。

PCIe 带宽:不到 5% 的利用率

这是最让我意外的数据。

GPU 0(PCIe x16 Gen3,理论上限 15.7 GB/s)

指标 实测值 利用率
Rx 平均 85 MB/s 0.5%
Tx 平均 18 MB/s 0.1%
偶发峰值 2,356 MB/s 15.0%

GPU 1(PCIe x4 Gen3,理论上限 3.9 GB/s)

指标 实测值 利用率
Rx 平均 65 MB/s 1.7%
Tx 平均 175 MB/s 4.4%
偶发峰值 1,334 MB/s 33.9%

GPU1 的 x4 带宽,全程平均利用率只有 **4.4%**。即使是偶发峰值,也只用了三分之一。

更关键的是,120 秒内 PCIe Replay 错误为零——没有任何因带宽不足导致的重传。

这说明:PCIe x4 在我们的推理场景中完全不是瓶颈。

GPU 利用率:只有 40%

监控数据显示两张卡的 SM(流处理器)利用率都稳定在 39-44%,功耗约 130W(TDP 250W 的 52%)。

SM 利用率低通常意味着两种可能:

  1. 算力有富余,被其他环节卡住了
  2. kernel launch 之间有空隙

结合 PCIe 带宽也远未饱和,问题指向一个更底层的瓶颈。

真正的瓶颈:显存带宽

推算过程很简单:

1
2
3
4
5
6
每 token 激活参数量:3B(A3B MoE,只激活 ~3B/35B)
量化精度:Q4_K_M ≈ 2 bytes/param
每 token 需要读取的数据量:3B × 2 = 6 GB

2080 Ti 显存带宽:616 GB/s
理论生成速度上限:616 ÷ 6 103 t/s

103 t/s 的理论天花板,跟实测的 105 t/s 几乎完全吻合。

这就解释了一切:

  • 单卡 73 t/s:单卡显存带宽 616 GB/s,效率 71%(kernel 开销、KV cache 读取等损耗)
  • 双卡 93 t/s:有效带宽翻倍到 1232 GB/s,但同步开销吃掉了一半收益,实际效率 45%
  • MTP 105 t/s:MTP 接受率 49%,额外 10% 的提升也被显存带宽上限压制

显存带宽是硬天花板。算力够用(SM 40%),PCIe 够用(利用率 5%),但每生成一个 token,都必须从 VRAM 读取 6 GB 的权重数据,这个速度取决于显存带宽,跟 PCIe 完全无关。

为什么双卡效率只有 45%?

既然不是 PCIe 的问题,那双卡扩展效率低的原因是什么?

答案是 PHB 拓扑下的同步延迟

我们的两张卡没有 NVLink,跨卡通信路径是:

1
GPU0 → CPU → GPU1

Tensor Parallel 的每一层都需要 all-reduce 同步。Qwen3.6 有 64 层,每层一次同步,意味着每生成一个 token 要做 64 次跨卡通信。虽然单次通信数据量不大(all-reduce 的是梯度/激活值,不是权重),但延迟会累积。

粗略估算:

  • 每层 all-reduce 延迟:~5-10 μs
  • 64 层总计:~320-640 μs
  • 每个 token 生成时间:~10 ms
  • 通信开销占比:3-6%

加上 kernel launch 调度、CUDA stream 同步等开销,总效率损失约 50%。

升级路径 ROI 分析

基于以上分析,我评估了四条升级路径:

方案 成本 预期提速 ROI
换 X570 主板(x16/x16) 500-800 元 ~0% ❌ 白花钱
加 NVLink 桥接 200-500 元 5-10% ⚠️ 意义不大
换 2× RTX 3090 6,000-8,000 元 +50% ✅ 性价比最高
换 2× RTX 4090 20,000+ 元 +65% 💰 土豪方案

为什么换主板没用?

因为 PCIe x4 的带宽只用了不到 5%。把 x4 升级到 x16,就像给一条日均车流量 50 辆的双车道公路扩建成八车道——路是宽了,但车没变多。

NVLink 能消除 PHB 中转延迟,把 all-reduce 从 CPU 桥接改为 GPU 直连。但我们的 MoE 模型单 token 激活参数只有 3B,同步数据量很小,延迟改善有限。预计提速 5-10%,投入 200-500 元不太划算。

真正有意义的升级:换卡

RTX 3090 显存带宽 936 GB/s(比 2080 Ti 的 616 GB/s 高 52%),24GB 显存还能跑更大的模型。二手价 3000-4000 元,两张 6000-8000 元,预计跑 35B-A3B 能到 140-160 t/s

显存带宽性价比对照

GPU 显存带宽 二手价(估) 显存 性价比
2080 Ti 22GB(魔改) 616 GB/s 1,500 元 22GB 0.41
RTX 3090 24GB 936 GB/s 3,500 元 24GB 0.27
RTX 4090 24GB 1,008 GB/s 13,000 元 24GB 0.08

2080 Ti 魔改版的性价比确实最高。但如果你追求速度,3090 是最合理的升级目标。

关键结论

  1. PCIe x4 不是瓶颈——实际利用率不到 5%,换主板解决不了问题
  2. 显存带宽才是天花板——616 GB/s 限制了 103 t/s 的理论极限
  3. 双卡效率低是因为同步延迟——PHB 拓扑的 CPU 中转,不是 PCIe 带宽不够
  4. MTP 在显存带宽受限时收益有限——带宽用满了,分给投机 token 的空间很小
  5. 升级优先看显存带宽——3090 是性价比最优解

测试方法

如果你也想做类似的瓶颈分析,核心命令是:

1
2
3
4
5
6
7
8
9
10
11
# PCIe 带宽监控(每秒采样)
nvidia-smi dmon -s t -d 1 -c 120 > pcie_bandwidth.log

# GPU 利用率 + 功耗
nvidia-smi dmon -s pu -d 1 -c 120 > gpu_util_power.log

# 显存使用
nvidia-smi dmon -s m -d 1 -c 120 > gpu_memory.log

# PCIe Replay 错误
nvidia-smi dmon -s e -d 1 -c 120 > pcie_errors.log

然后在跑推理的同时采集数据。如果 PCIe 利用率低于 30%、Replay 错误为零,那就跟 PCIe 没关系,去看显存带宽。

附录:原始数据

30 轮压力测试的完整数据(节选):

1
2
3
4
5
6
7
8
9
[01]  512 tokens in   5.46s |  93.7 t/s | prompt: 31 tok
[02] 400 tokens in 3.99s | 100.3 t/s | prompt: 38 tok
[06] 400 tokens in 3.75s | 106.8 t/s | prompt: 41 tok
[16] 300 tokens in 2.66s | 112.8 t/s | prompt: 40 tok
[21] 500 tokens in 5.33s | 93.8 t/s | prompt: 50 tok
[29] 242 tokens in 3.07s | 78.8 t/s | prompt: 34 tok
[30] 400 tokens in 3.76s | 106.3 t/s | prompt: 41 tok

平均: 100.9 t/s, 中位数: 106.8 t/s, 标准差: 11.3

PCIe 带宽数据(推理期间典型值):

1
2
3
4
# GPU 0 (x16): Rx ~85 MB/s, Tx ~18 MB/s
# GPU 1 (x4): Rx ~65 MB/s, Tx ~175 MB/s
# 偶发峰值: GPU0 Tx 2356 MB/s, GPU1 Tx 1334 MB/s
# PCIe Replay 错误: 全程为零

测试环境:Ubuntu 22.04, CUDA 13.0, llama.cpp (2026-06-05 build), 驱动 580.159.03


双卡2080Ti跑大模型:PCIe带宽是瓶颈吗?一次深度实测
https://www.normdist.com/2026/06/05/ND-20260605-001-dual-2080ti-bottleneck/
作者
小瑞
发布于
2026年6月5日
许可协议