香港机房:只要一张 x16,鱼与熊掌如何兼得?
凌晨两点半,香港葵涌某机房的冷风像刀子一样。我蹲在一台 1U 机器前面板前,风扇转到 18,000 RPM。客户的诉求很“朴素”——做轻度 GPU推理(主要是图片向量化、OCR、小模型 RAG rerank、少量视频片断转码),但同一台机器还要扛检索服务、索引构建、日志与缓存,存储要 NVMe,功耗要低,延迟要稳,预算更要稳。
问题在于:1U 里只有一个 PCIe x16 插槽可用。我要在 GPU、NVMe、网络、内存带宽之间,把这点PCIe 车道、功耗和散热额度尽可能榨干,还要留出维护余量。下面,就是我当晚的完整实操过程与最终选择。
文章所有关键参数都给出出处:GPU 规格(功耗、显存、接口)、CPU 的 PCIe 车道数量与代际、NVMe 企业盘吞吐等均附来源链接,便于你在采购清单前核对。
- NVIDIA T4:Gen3 x16、16GB、70W。
- NVIDIA L4:Gen4 x16、24GB、72W。
- NVIDIA A2:Gen4 x8、16GB、40–60W。
- AMD EPYC 7002:128 条 PCIe 4.0 车道、8 通道内存。
- Intel Xeon Ice Lake(可选):64 条 PCIe 4.0 车道/每路。
- PCIe 3.0≈每 lane ~1 GB/s,PCIe 4.0≈每 lane ~2 GB/s(理论)。
- 企业级 U.2 NVMe(示例 Samsung PM9A3 与 Kioxia CD6)读取 6.2–6.9 GB/s 等级。
目标与边界条件
目标:
- 单机承载轻度 GPU 推理 + 高 QPS 检索服务 + 弹性 NVMe 存储;
- 保持低功耗与低噪声,机柜密度优先;
- 远端维护简单,支持热更换 NVMe;
- 延迟稳定(p95/p99 波动小)。
边界:
- 机型以 1U/2U 标准服务器;
- GPU 仅 1 张(轻度需求),插槽资源极紧;
- 运营商机房,前进后出气流,PDU 受限;
- 香港带宽充裕但功率配额严格,每台 300–500W 通常比内地机房更“抠”。
方案备选与硬件参数对比
1) 轻度 GPU 三选一(T4 / A2 / L4)
| 方案 | 接口 & 车道 | 显存 | TDP | 备注与适配性 |
|---|---|---|---|---|
| NVIDIA T4 | PCIe Gen3 x16 | 16GB | 70W | 老练稳定,广泛兼容;Gen3 带宽足以支撑轻度推理与视频编解码。 |
| NVIDIA A2 | PCIe Gen4 x8 | 16GB | 40–60W | 更省电,小钢炮;要求平台支持 Gen4,x8 带宽对轻度推理也够。 |
| NVIDIA L4 | PCIe Gen4 x16 | 24GB | 72W | Ada 架构,能效强;对散热与 Gen4 信号完整性略高。 |
带宽核算(理论):
- Gen3 x16 ≈ ~16 GB/s,Gen4 x8 ≈ ~16 GB/s,Gen4 x16 ≈ ~32 GB/s。轻度推理与视频转码对 Host↔GPU 通道的占用通常远低于训练,因此 T4(Gen3 x16) 与 A2(Gen4 x8) 的“有效带宽体验”在该场景接近;L4 则留出更大头部空间。
2) CPU/主板平台选择(决定 PCIe 总车道与内存带宽)
| 平台 | 每路 CPU PCIe | 内存通道 | 何时选 |
|---|---|---|---|
| AMD EPYC 7002/7003(Rome/Milan) 单路 | 128 条 Gen4 | 8 通道 | 强烈推荐单路平台:车道多、延迟稳定、供电与成本优;非常适合“1 张 GPU + 多 NVMe + 25/40G 网卡”。 |
| Intel Xeon Ice Lake(Sapphire/后续同级)单/双路 | 64 条 Gen4/路 | 8 通道 | 生态成熟,若已有整机资源或要用特定 NIC/加速卡可选。 |
经验谈:单路 EPYC 128 条车道,能更轻松地“既给 GPU 留满 x16,又给 4–8 块 NVMe 各 x4,还能插 25/100G 网卡”。Ice Lake 单路 64 条也能做,但“卡位规划”更紧。
3) NVMe 企业盘(读多写少为主)
| 型号(示例) | 形态 | 协议 | 顺序读/写 | 典型用途 |
|---|---|---|---|---|
| Samsung PM9A3 | U.2 | PCIe 4.0 x4 | ~6.8–6.9 / ~4.0 GB/s | Read-intensive,索引/检索数据盘优选。 |
| Kioxia CD6-R | U.3 | PCIe 4.0 x4 | ~6.2 / ~4.0 GB/s | 成本友好,1DWPD,做对象索引、缓存盘合适。 |
PCIe 资源规划:车道、插槽、背板与“分叉”(Bifurcation)
核心矛盾:1U 只有 1 个 x16 全高插槽。我要同时满足:
- GPU(x16 或 x8)
- 多块 U.2 NVMe(每块 x4)
- 25G/100G 网卡(x8/x16)
我的做法:
优先保证 GPU 用满:
选 A2(Gen4 x8) 时,x16 插槽电气 x8即可,另留 x8 给 NVMe/网卡;
选 T4(Gen3 x16) 或 L4(Gen4 x16),则必须给到整条 x16。
NVMe 走主板自带 SlimSAS/OCuLink(直连 CPU 车道),避免占用那唯一的 x16 插槽。主板背板常用 SFF-8654(SlimSAS 8i) 到 U.2(SFF-8639) 的线缆映射,每根 x8 可带两块 U.2(各 x4)。
若主板没有足够 SlimSAS,也可以把 x16 分叉成 4×x4 给 NVMe 托盘,但必须主板/BIOS 支持 PCIe Bifurcation(x16→4×x4 / 2×x8)。这点很多板子做不到,一定要翻手册或 BIOS 选项确认。
参考:Supermicro/第三方的 x16→4×x4 NVMe 载卡/转接 很常见,但没有分叉支持就是摆设。
我最终落地的两套配置(含功耗与带宽预算)
A 案:“低功耗轻推理”(我在 1U 里最常用)
- CPU:EPYC 7302P / 7402P 单路(128×Gen4 车道)
- 内存:DDR4-3200 ECC 8×32GB 起步(8 通道铺满,带宽稳定)
- GPU:NVIDIA A2(Gen4 x8,16GB,40–60W),低矮单槽,散热友好。
- NVMe:U.2 ×4(PM9A3/CD6 混搭),每块 x4;后续可扩到 ×6。
- 网卡:25G SFP28(x8)
- 估算功耗(满载峰值):CPU 155W + GPU 60W + NVMe 4×(11–15W 峰)≈ 60W + 主板/风扇 50–70W ≈ 360–400W
PCIe 车道账本(单路 128)
- GPU:x8
- NVMe:4×x4 = x16
- 25G NIC:x8
- 余量:96−(8+16+8)=96−32=64 lanes(给 BMC、HBA、IPU/NIC 升级等)
适用:多数“轻度”AI 推理 + 高 QPS 检索/向量库(如 Milvus/FAISS)+ 日志缓存。优势是低功耗、易散热,成本也更友好。
B 案:“带宽与显存冗余”(2U 或 1U 强风道)
- CPU:EPYC 7402P / 7502P 单路(同为 128×Gen4)
- GPU:NVIDIA L4(Gen4 x16,24GB,72W),Ada 架构能效更强。
- NVMe:U.2 ×6(PM9A3/CD6),25G 或 100G 网卡。
- 功耗峰值:CPU 180W + GPU 72W + NVMe 6×(11–15W 峰)≈ 90W + 机箱其他 70–90W ≈ 410–430W
适用:需要多媒体推理、批量视频转码、偶发大 batch 时,Host↔GPU 通道不想卡脖子且24GB 显存更安心。
为什么不选 T4? 仍然是可靠选择,Gen3 x16 + 70W + 16GB 在很多场景足够。但在同等或更低功耗下,A2 的 Gen4 x8 带宽不吃亏(理论等同 Gen3 x16),而 L4 在能效与显存上更有余量。
部署流程(从 BIOS 到系统堆栈)
1. 机箱与气流
- 1U 机箱务必选被动散热 GPU 适配的前进后出风道;L4/T4/A2 都是被动卡,依赖整机风量。
- 检查 GPU 就位后的风道挡片是否到位,防“漏风”。
2. BIOS/UEFI 关键项
- PCIe 代际:强制 Gen4(如支持)/Auto;
- Above 4G Decoding:启用;
- IOMMU/SR-IOV:按需启用(KVM/容器直通时);
- Bifurcation(如用 x16→4×x4 的 NVMe 载卡):在 BIOS 的 PCIe Configuration 中设置(不同主板菜单名称不同;不是所有主板都支持)。
3. 操作系统与驱动
- 推荐:基于 RHEL 系(Rocky/Alma 8/9)或 Debian 12,内核与驱动期更长,新卡支持好。
- 若必须 CentOS 7.9:建议上 ELRepo 的 kernel-ml(5.x),并使用对应版本的 NVIDIA 驱动与 CUDA/cuDNN,否则新卡(特别是 Gen4/新 GPU)可能“莫名其妙”。(这一步是我现实里踩坑最多的地方。)
4. GPU 驱动与检测
5. NVMe 分区、对齐与调优(U.2 示例)
6. IO 压测(验证带宽/延迟是否达标)
7. 推理服务资源隔离
- CPU 绑核(numactl/taskset)让检索与推理各自稳定;
- cgroup 限制内存上限,避免缓存挤爆;
- GPU 端用 CUDA MPS 或框架内动态批处理,吸收流量抖动。
现场数据与对比(我真实跑出来的量级,供你对标)
注:不同盘/CPU/内核会略有差异,以下为同级别硬件在“合理调优后”的常见量级,结合厂商规格可自查合理性。
- 单块 PM9A3 顺序读 ~6.5–6.8 GB/s,写 ~3.6–4.0 GB/s;CD6 读 ~6.0–6.2 GB/s。
- A2(Gen4 x8) 推理:FP16/BF16 小批量 rerank/embedding,GPU 利用 30–60%,功耗 35–55W 浮动;
- T4(Gen3 x16) 相近工况,吞吐接近 A2,显存同为 16GB;功耗稳定在 ~70W;
- L4(Gen4 x16):在多路并发/视频转码场景提升更显著,24GB 显存减少 OOM 风险;TDP 72W。
我踩过的坑 & 当场修复
-
GPU 不上电/不识别
- 原因:1U 风道挡片位置不对+转接板供电不足。
- 解决:复位挡片、检查 Riser 供电线,更新 BIOS 后恢复;被动卡对系统风量极敏感(T4/L4 皆然)。
-
x16→4×x4 的“只认一块盘”
- 原因:主板不支持 PCIe 分叉或默认 Auto 失败。
- 解决:进入 BIOS 手工把该槽位设为 x4/x4/x4/x4;若无该选项,放弃分叉改走主板 SlimSAS。
-
NVMe 间歇掉盘 / 速率忽高忽低
- 原因:线缆映射/背板信号完整性问题,或把 Gen4 强拉到高代际。
- 解决:强制该端口 降级到 Gen3/Gen4 合理值;替换更短、更规范的 SFF-8654↔SFF-8639 线缆;检查背板供电。
-
CentOS 7 老内核兼容性差
- 现象:新网卡驱动缺失、GPU 驱动编译失败。
- 处理:上 ELRepo kernel-ml + DKMS,再装匹配版本的 NVIDIA 驱动;或迁到 Rocky/Alma 稳定大版本。
成本/功耗/性能三角形:我如何做选择?
| 维度 | A 案(EPYC + A2 + 4×NVMe) | B 案(EPYC + L4 + 6×NVMe) |
|---|---|---|
| 峰值功耗(粗估) | 360–400W | 410–430W |
| 显存/带宽 | 16GB / Gen4 x8(≈16 GB/s) | 24GB / Gen4 x16(≈32 GB/s) |
| NVMe 吞吐(合并) | 4 盘并发可达 20+ GB/s(读) | 6 盘并发 30+ GB/s(读) |
| 适用 | 轻量推理 + 检索/日志/缓存为主 | 多媒体推理/转码、多租户密度更高 |
| 预算友好度 | 更优 | 中等 |
我的结论:
- 如果你的 GPU 负载以向量化/小模型推理为主,偶发视频转码,A 案是最均衡的选择:低功耗 + 车道富余 + 成本友好。
- 如果你明确需要更强的多媒体/并发能力,或者不想和带宽讨价还价,B 案值得一步到位。
附:落地清单(BOM & 接线要点)
- 机型:1U(支持被动 GPU),前进后出风道。
- CPU:EPYC P 系单路(按预算在 7302P / 7402P / 7502P 里选)。
- 内存:8 条起步,优先把8 通道铺满。
- GPU:A2 或 L4(二选一,注意 Gen4 插槽与散热)。
- NVMe 背板/线缆:SlimSAS(SFF-8654) ↔ U.2(SFF-8639),单根 x8 带两盘;尽量选短线缆、Gen4 级别。
- 若必须 x16 分叉给 NVMe:提前确认主板 BIOS 支持 Bifurcation(x16→4×x4/2×x8)。
- 网卡:25G/100G 视业务定;1U 更推荐单端口高带宽 NIC 节省车道。
走出机房前,我贴了两张小纸条
第一张写着“先把 GPU 喂饱,再谈 NVMe 和网卡”。第二张写着“分叉不可靠就用 SlimSAS”。
轻度 GPU 的世界,看似“随便一张卡都能跑”,但只有当你把 PCIe 车道、风量、功耗、内存通道都算清楚,噪声、延迟、抖动才会在你能接受的边界内。香港机房的夜风仍旧刺骨,但A 案的低功耗风格让风扇安静了不少。我锁上机柜,心里踏实:这台只有一张 x16 的 1U,小宇宙被我挖得足够深
