如何在无头服务器上关闭 Nvidia GPU?

如何在无头服务器上关闭 Nvidia GPU?

我正在运行一个带有 Nvidia GPU 的无头服务器。即使 GPU 没有执行任何工作,它也消耗大约 25 瓦的功率:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26       Driver Version: 430.26       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 950     Off  | 00000000:01:00.0 Off |                  N/A |
|  0%   61C    P0    26W / 110W |      0MiB /  2001MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

当 GPU 不使用时,有没有办法完全关闭 GPU 的电源输送?

我尝试过 sudo prime-select intel 哪种方法确实会导致nvidia-smi停止工作,但连接到墙上的功率计显示的功耗与选择的任一方法intel完全相同nvidia

完全移除 GPU 可降低约 30 瓦的功耗,这一点是预期的。

主要目的是节省空闲操作期间的电力和成本,并可选择在需要时启动 GPU(通过 ssh 远程)。

答案1

可以观察到,GPU 使用的是性能模式 P0,该模式下显卡的功耗非常高。在空闲模式下,它最好调回到 P8 模式,该模式下功耗较低。

我按照以下步骤更改行为。假设您使用的是 Linux:

您需要拥有该机器的 sudo 权限。首先,启用持久模式:

sudo nvidia-smi -pm 1

然后,重置 GPU 的时钟:

sudo nvidia-smi -rgc

注意:要了解有关这些命令的更多信息,请输入

nvidia-smi --help

答案2

这些 OPTIMUS 组合解决方案在设计时充分考虑了 Windows 操作系统。

从之前的观察来看,NVIDIA 显卡似乎在 Windows 操作系统上完全关闭。我的假设是 BIOS 处理来自 Windows 操作系统的调用的方式不同而且它应该

我现在没有这个来测试这个方法,但仍然值得一试。

方法是先禁用ACPI 开放系统互连 内置操作系统供应商字符串然后报告Windows 7的作为当前操作系统。有点欺骗 BIOS...Linux 内核默认一直这样做,但这是一种更可控的方法。

要做到这一点,第一的/etc/default/grub像这样编辑:

sudo nano /etc/default/grub

然后,添加选项acpi_osi=!acpi_osi=\"Windows 2009\"GRUB_CMDLINE_LINUX_DEFAULT这样:

GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi=! acpi_osi=\"Windows 2009\""

然后Ctrl,按+x然后y按 prss 然后按 保存并关闭文件Enter

在那之后,像这样更新 GRUB:

sudo update-grub

最后,重新启动系统并测试现在禁用 NVIDIA 卡是否以不同的方式进行。

然而,这种方法在开源驱动程序中可能具有更高的成功率VGA 转换器比专有的 NVIDIA 驱动程序更好。

如需进一步了解,请参阅内核参数

答案3

您可以尝试使用其中一个PowerMizerMode可用,看看是否能让您的系统进入 P8 状态

$ nvidia-settings -a "[gpu:0]/GPUPowerMizerMode=<your no.>"

请注意PowerMizerModes 和P 状态可用性因系统而异。使用

$ nvidia-settings -q GpuPowerMizerMode

检查一下。

或者您也可以尝试强制一些参数

  1. 通过功率限制nvidia-smi -i 0 -pl 10(不确定它是否有效)。
  2. GPUGraphicsClockOffset,,GPUMemoryTransferRateOffset通过nvidia-settings
  3. 通过xorg.conf參考

您可能需要重新启动来测试选项。

有关的

  1. nvidia - 空闲的 GTX 1080 显卡功耗高
  2. https://gist.github.com/DavidMetcalfe/fabbd2ddcb6ba4927269f6f0db31a92f
  3. https://forums.developer.nvidia.com/t/gtx-1070-driver-4-15-25-performance-mode-p0-does-not-automatically-downshift-to-idle-p8-after/69238
  4. https://github.com/devonkinghorn/linux-nvidia-dynamic-power-management-setup

相关内容