// 技术说明 · GB10 热行为分析

为什么 DGX Spark 的 GB10 在持续负载下 运行温度居高不下

NVIDIA DGX Spark 使用 GB10 超级芯片 —— Blackwell 架构,计算能力 sm_121(在部分早期 CUDA 工具链中显示为 sm_90)。在持续推理或训练工作负载下, GB10 会长时间稳定在 80 摄氏度出头。这不是硬件故障,而是设计选择。 常规 NVIDIA GPU 上可用的散热杠杆,在这颗芯片上并未暴露。

缺失的部分

功率上限和风扇控制在 nvidia-smi 中都返回 [N/A]:

$ nvidia-smi --query-gpu=power.limit,power.max_limit,power.min_limit,fan.speed --format=csv,noheader
[N/A], [N/A], [N/A], [N/A]

这些接口并未被"隐藏"或需要 sudo 才能访问 —— 它们在 GB10 驱动接口上根本 未实现。固件根据温度和工作负载状态在内部管理这两个维度。用户空间的任何 配置都无法改变它们。

唯一有效的执行器:--lock-gpu-clocks

唯一响应的杠杆是图形时钟上限。即使 nvidia-smi --query-supported-clocks=graphics 在 GB10 上返回 [N/A],驱动仍然通过 --lock-gpu-clocks 接受硅片 工作范围内的任意整数 MHz 值:

$ sudo nvidia-smi -lgc 1500,2000 -i 0
GPU clocks set to "(gpuClkMin 1500, gpuClkMax 2000)" for GPU 0000000F:01:00.0
All done.

我们生产硬件上的参考上限约为 3003 MHz,最小接受值约为 900 MHz,中间步长 均被接受。-rgc 重置为出厂设置。两条命令均立即生效。

结果:持续高温是默认运行状态

由于只有固件决定何时降频,且它做得比较保守(避免 SW-slowdown,而非追踪任意 温度目标),一台 DGX Spark 在 90+% 使用率下服务 Ollama 时,会稳定在 80 摄氏度 出头并长期维持。用户无法要求固件更激进地降频。剩下的唯一执行器就是图形时钟 上限。

我们的应对方案

我们构建了一个小型守护进程,每 30 秒采样 GPU 温度,并使用三段迟滞控制将时钟 上限以 150 MHz 步长调整:进入警告带时 降频,处于目标带时 保持, 连续三次冷采样后 升频。在我们的生产 GB10 节点(spark-23)上, 在同样 94% 使用率下持续温度下降了 11 摄氏度。完整机制及许可条款见产品页: thermal.zctechnologies.org。实时遥测: /live-telemetry.html。 关于 -lgc 在 GB10 上实际行为的参考: /nvidia-smi-lgc-on-gb10.html。


由 C.R. Burrell LLC 发布。写给在生产环境运行 DGX Spark 的工程师。欢迎指正: [email protected]。