Nvidia RTX Spark 笔记本电脑在 Linux 上因加密电源固件导致 GPU 性能下降 65%
TL;DR
- 在 RTX Spark 笔记本电脑上双启动 Linux 是可行的,但 GPU 在接通交流电源时会被限制在约 780 MHz,导致推理吞吐量降至约 14 tokens/s。
- 这种限制是由仅限 Windows 的固件组件 Nvidia Platform Controllers and Framework 引起的,其加密的电源表只能由 Windows 驱动程序解密。
- 基准测试显示,Windows 和 WSL 在 120 B 模型上可达到约 65 tokens/s,而原生 Linux 仅能达到约 14 tokens/s。
- 内存分配是另一个障碍:笔记本电脑为 GPU 保留了 96 GB 的统一内存,且只能在 Windows 中进行调整。
- 目前,WSL 是实用的解决方案,因为它运行在 Windows 驱动程序堆栈上,并保留了完整的 GPU 加速。
- 永久修复需要 Nvidia 在其 Linux 驱动程序中公开相同的电源管理逻辑。
Linux 可以启动,但 GPU 被锁定
当 MSI Prestige N16 Flip AI Plus(一款 RTX Spark 笔记本电脑)安装 Linux 时,开源的 Nvidia 内核驱动程序可以正确加载,系统能够输出 4K @ 120 Hz,手动配置后音频、键盘和触摸板均可正常工作。然而,一旦笔记本电脑连接到墙上电源,GPU 时钟频率就会停滞在 ~780 MHz,而不是在 Windows 上观察到的 ~2.2 GHz。这种时钟频率的崩溃使得原本在 120 B 模型上能够达到约 65 tokens/s 的芯片性能降至 ~14 tokens/s,即 5 倍的性能下降。
"在 Linux 上接通电源时,GPU 时钟速度会崩溃到约 780 MHz,而 Windows 上约为 2.2 GHz,这是因为固件的电源表是加密的,只有 Windows 驱动程序才能解密它。" – MindStudio 博客
这种减速并非由热节流引起;温度保持在 40 °C 到 47 °C 之间。这纯粹是一种电源管理限制。
隐藏的仅限 Windows 的控制器
Windows 上的设备管理器显示了一个名为 Nvidia Platform Controllers and Framework 的组件。这个固件-驱动程序对控制着笔记本电脑上 CPU 和 GPU 之间的共享电源预算(与拥有专用 GPU 轨道的桌面级 DGX Spark 不同)。控制器从固件接收加密的电源表;Windows 驱动程序持有解密密钥。
在 Windows 中禁用该控制器会重现 Linux 上的减速现象:令牌吞吐量从约 83 tokens/s 降至约 31 tokens/s,GPU 时钟频率降至约 786 MHz。重新启用它会立即恢复全速。Linux 缺乏任何等效组件,因此 GPU 永远无法获得更高的功率分配。
"原因可以追溯到 Windows 设备管理器中可见的一个名为 Nvidia Platform Controllers and Framework 的组件。在 Windows 中禁用该控制器直接重现了减速现象。" – MindStudio 博客
为什么固件是加密的
Nvidia 对电源表进行加密以保护其专有的电源管理算法。Windows 驱动程序包含密钥;而开源的 Linux 驱动程序则没有。提取密钥或修补驱动程序的尝试导致了内核崩溃或仅能实现临时变通,这证实了正确的修复必须来自 Nvidia。
基准测试展示了性能差距
| 环境 | GPU 时钟 (MHz) | Tokens / s (GPT-OSS-120B) |
|---|---|---|
| Windows (原生) | ~2 200 | 65.4 |
| WSL 2 (Windows 上的 Linux) | ~2 200 | 65.1 |
| Nvidia DGX Spark (Linux) | ~2 200 | 61 |
| RTX Spark 上的原生 Linux | ~780 | 13.9 |
使用 vLLM 运行八个并发客户端的第二次测试显示,WSL 上为 127 tokens/s,而原生 Linux 上为 39.5 tokens/s。当笔记本电脑拔掉电源时,Linux 的时钟频率升至约 1 800 MHz,令牌速率升至 61-67 tokens/s,与 Windows 持平。这种异常——即接通电源的 Linux 反而更慢——直接源于电源控制器的行为。
内存划分是 Linux 的另一个障碍
RTX Spark 笔记本电脑提供高达 128 GB 的统一内存,由 CPU 和 GPU 共享。开箱即用时,固件为 GPU 保留了 96 GB,仅留给操作系统 32 GB。Linux 无法修改此划分,因为固件 UI 仅存在于 Windows 中。通过在 Windows 中将 GPU 保留内存降低到 4 GB,Linux 在重启后可以看到完整的 120 GB 内存。
"笔记本电脑默认预留 96 GB 统一内存给 GPU,且只有 Windows 提供更改该划分的设置,在 Linux 能看到超过一小部分内存之前,必须先进行此操作。" – MindStudio 博客
WSL:务实的中间地带
由于 WSL 运行在 Windows 驱动程序堆栈之上,它继承了 Windows 的电源管理逻辑,因此无论电源来源如何,都能保留完整的 GPU 加速。在将 WSL 的内存分配(默认 14 GB)增加到更大的值后,基准测试结果与原生 Windows 几乎没有区别。
"WSL 在 Windows 内核和驱动程序堆栈之上运行 Linux 环境,因此它保留了 Windows 的 GPU 时钟加速行为并避免了节流问题,同时仍然支持像 vLLM 这样以 Linux 为先的 AI 工具。" – MindStudio 博客
对于需要 Linux 工具但无法接受 5 倍性能下降的开发人员来说,WSL 目前提供了最佳的性能与便利性平衡。
社区反应及未来可能的路径
- Nvidia 的闭源方法 – 几位评论者(例如 @jleask, @laughing_man)感叹 Nvidia 习惯于将关键固件保持加密,从而垄断性能。
- 逆向工程的希望 – 像 @viraptor 和 @bitbasher 这样的用户建议社区最终可以对电源表进行逆向工程,但承认这种黑客手段将非常脆弱且仅限于单台机器。
- 对上游修复的期望 – 共识是,正确的解决方案必须来自 Nvidia 在其 Linux 驱动程序中提供电源管理逻辑,类似于过去的功能(例如 Dynamic Boost)在延迟后被添加到 Linux 中一样。
- 替代硬件 – 一些评论者(例如 @demo4567)暗示转向 AMD GPU,这些 GPU 在历史上拥有更开放的电源管理接口。
RTX Spark 所有者的实用清单
- 双启动 – 使用捆绑了 Nvidia 开源驱动程序的发行版(例如 Omarchy)以获得功能齐全的桌面。
- 调整统一内存 – 启动进入 Windows,打开 Nvidia Platform Controllers 设置,并在启动 Linux 之前减少 GPU 内存预留(例如,设置为 4 GB)。
- 预期交流电源下的节流 – 如果需要完整性能,请在 WSL 下运行工作负载或让笔记本电脑使用电池供电。
- 监控 GPU 时钟 – 使用
nvidia-smi验证时钟频率是否保持在 2 GHz 左右;如果保持在约 780 MHz,则说明您遇到了 Linux 的限制。 - 关注驱动程序更新 – 查看 Nvidia 的发行说明,了解是否有关于 Linux 上“Platform Controllers”或“Power Table”支持的任何提及。
结论
Linux 可以在 Nvidia RTX Spark 笔记本电脑上运行,但一个加密的、仅限 Windows 的电源管理固件组件在机器接通电源时将 GPU 限制在约 780 MHz,使 AI 推理速度降低了约 65%。在 Nvidia 提供等效的 Linux 驱动程序之前,保持完整性能的唯一可靠方法是在 WSL 或 Windows 本身下运行工作负载。
Sources
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- 项目