I am running a headless server with an Nvidia GPU. Even when the GPU is not doing any work, it is consuming about 25 Watts of power:
+-----------------------------------------------------------------------------+
| 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 |
+-----------------------------------------------------------------------------+
Is there a way to completely turn off power delivery to the GPU when it is not in use?
I tried
sudo prime-select intel
Which does cause nvidia-smi
to stop working, but a power meter connect to the wall shows exactly the same power consumption with either intel
or nvidia
selected.
Completely removing the GPU reduces the power consumption by about 30 Watts as expected.
The main purpose is to save power and costs during idle operations, with an option to spin up the GPU when it is needed (remotely via ssh).
It can be observed that the GPU is using Performance mode P0, where the power consumption of the card is very high. In Idle, it should ideally throttle back to P8 mode, where it will consume less power.
I follow the following steps to change the behaviour. Assuming that you are using Linux:
You would need sudo privileges to the machine. First, enable the persistence mode:
Then, reset the clocks for the GPU:
Note: To know more about these commands, please type
These OPTIMUS combo solutions are made with the Windows operating system in mind.
From previous observation, NVIDIA cards seem to shut down completely on Windows OSs. My assumption is that BIOS handles calls from a Windows OS differently and it should.
I do not have one of these right now to test this method but it's worth a try nonetheless.
The method is to first disable ACPI OSI built-in OS vendor strings then report Windows 7 as the current OS. Sort of lying to the BIOS... Linux kernels do this all the time by default, but this is a more controlled way of doing it.
To do that, first edit
/etc/default/grub
like so:Then, add the options
acpi_osi=!
andacpi_osi=\"Windows 2009\"
toGRUB_CMDLINE_LINUX_DEFAULT
like so:Then, save and close the file by pressing Ctrl+x then prss y then press Enter.
After that, update GRUB like so:
Finally, reboot your system and test if disabling the NVIDIA card is done differently now.
This method, however, might have higher success levels with the open source driver nouveau and VGA Switcheroo than with the proprietary NVIDIA drivers.
For further reading, please see kernel parameters.
You could try with one of the
PowerMizerMode
s available, to see if that brings your system into state P8Note that
PowerMizerMode
s and P-states available vary across systems. Useto check this.
Or you can also try forcing some parameters
nvidia-smi -i 0 -pl 10
(not sure it would work).GPUGraphicsClockOffset
,GPUMemoryTransferRateOffset
, vianvidia-settings
.xorg.conf
, ref.You may need to reboot to test options.
Related: