双卡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% |
三个关键观察:
- **单卡变双卡,提升约 27%**——远低于理论上的近 100%
- **MTP 只额外提升了 13%**——远低于论文宣称的 30-50%
- 双卡效率只有 45%——一半的算力被浪费了
问题来了:这 55% 的浪费,是谁造成的?
压力测试:30 轮连续请求
为了定位瓶颈,我写了一个压力测试脚本,向模型服务器连续发送 30 个不同类型的请求(知识问答、代码生成、数学推理、创意写作等),同时用 nvidia-smi dmon 以每秒一次的频率采集 GPU 全链路指标。
测试结果非常稳定:
1 | |
接下来逐项分析监控数据。
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 利用率低通常意味着两种可能:
- 算力有富余,被其他环节卡住了
- kernel launch 之间有空隙
结合 PCIe 带宽也远未饱和,问题指向一个更底层的瓶颈。
真正的瓶颈:显存带宽
推算过程很简单:
1 | |
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 | |
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 呢?
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 是最合理的升级目标。
关键结论
- PCIe x4 不是瓶颈——实际利用率不到 5%,换主板解决不了问题
- 显存带宽才是天花板——616 GB/s 限制了 103 t/s 的理论极限
- 双卡效率低是因为同步延迟——PHB 拓扑的 CPU 中转,不是 PCIe 带宽不够
- MTP 在显存带宽受限时收益有限——带宽用满了,分给投机 token 的空间很小
- 升级优先看显存带宽——3090 是性价比最优解
测试方法
如果你也想做类似的瓶颈分析,核心命令是:
1 | |
然后在跑推理的同时采集数据。如果 PCIe 利用率低于 30%、Replay 错误为零,那就跟 PCIe 没关系,去看显存带宽。
附录:原始数据
30 轮压力测试的完整数据(节选):
1 | |
PCIe 带宽数据(推理期间典型值):
1 | |
测试环境:Ubuntu 22.04, CUDA 13.0, llama.cpp (2026-06-05 build), 驱动 580.159.03