我们有一台新的 Supermicro 服务器 AS-4124GS-TNR,配备八块 NVIDIA RTX A6000。操作系统是 Ubuntu 20.04.2,NVIDIA 驱动程序版本是 460.73.01(未使用 Nouveau 驱动程序),CUDA 版本是 11.2。
我们对 GPU 进行了一些长时间的测试,系统很稳定。然而,在 GPU 空闲一段时间后,系统反复崩溃。
我们假设GpuPowerMizerMode
必须将其设置为 1 以防止 GPU 空闲期间崩溃(此假设得到了互联网上其他用户报告的支持)。
我们知道的唯一方法是启动 X(例如通过启动 gdm),然后通过以下方式设置相应的值nvidia-settings
(nvidia-settings
在没有 X/gdm 的情况下运行会导致“无法初始化服务器:无法连接:连接被拒绝。“)。但是当停止 X/gdm 时,该GpuPowerMizerMode
值会自动重置为 2。不幸的是,保持 X/gdm 运行不是一个选择,因为这也会导致系统不稳定。
因此,我们的问题似乎如下:
- GPU 空闲 +
GpuPowerMizerMode
!= 1 会导致系统冻结。GpuPowerMizerMode
只能通过nvidia-settings
连接到正在运行的 X/dm(?) 进行设置。为了持续将值设置为 1,X/dm(?) 必须保持运行。 - 运行 X/gdm 可能会导致系统崩溃。
我们的假设正确吗?/其他人是否也遇到了这些特定问题?
如何解决GPU空闲时卡顿的问题?
答案1
无需启动 GUI 会话(甚至不必安装一个!)即可更改此类设置;nvidia-settings
应该可以从帧缓冲区控制台或甚至在您编写的在启动时运行的脚本中正常工作。
请检查以确保:
# nvidia-settings -q GpuPowerMizerMode
Attribute 'GPUPowerMizerMode' (blacktemple:1[gpu:0]): 1.
Valid values for 'GPUPowerMizerMode' are: 0, 1 and 2.
'GPUPowerMizerMode' can use the following target types: GPU.
对于 8 个 GPU,只需编写一个简单的脚本,例如:
for n in $(seq 0 7); do
nvidia-settings -a "[gpu:$n]/GpuPowerMizerMode=1"
done
并以您认为方便的方式在启动时运行它。
我无法确定您的崩溃是否是由于在 GpuPowerMizerMode!=1 下运行时导致的。如果是这种情况,那么您的硬件可能有某种缺陷,您应该查找并更换它。