Limit NVIDIA graphics card power consumption
My RTX3080 Ti pulls up to 350 Watts and that can get so hot that games slow down. But you can limit power consumption on this card between 100 and 370 Watts.
How to set this up so it starts low already?
A systemd service is more reliable than e.g. .bashrc, crontab, or /etc/rc.local, because it runs as root during boot (NVIDIA documentation).
Create the service
Replace 200 with your desired wattage:
sudoedit /etc/systemd/system/nvidia-power-limit.service
Add:
[Unit] Description=Set NVIDIA GPU power limit After=nvidia-persistenced.service Wants=nvidia-persistenced.service [Service] Type=oneshot ExecStart=/usr/bin/nvidia-smi -i 0 -pl 200 RemainAfterExit=yes [Install] WantedBy=multi-user.target
Save the file, then enable and start it:
sudo systemctl daemon-reload sudo systemctl enable --now nvidia-power-limit.service
This runs the command immediately and automatically at every boot.
Verify it
Check the configured limit:
nvidia-smi -i 0 --query-gpu=power.limit --format=csv
Check the service:
systemctl status nvidia-power-limit.service
If it fails, inspect the boot log:
journalctl -u nvidia-power-limit.service -b
Check valid wattages first
Your GPU only accepts values within its supported range:
nvidia-smi -i 0 -q -d POWER
Look for:
Min Power Limit Max Power Limit
Use a value between those limits. NVIDIA’s syntax is:
sudo nvidia-smi -i 0 -pl <watts>
For example:
sudo nvidia-smi -i 0 -pl 180
If /usr/bin/nvidia-smi does not exist on your distribution, find its location with:
command -v nvidia-smi
Then use that path in ExecStart. For multiple GPUs, add another service command, for example:
ExecStart=/usr/bin/nvidia-smi -i 0 -pl 200 ExecStart=/usr/bin/nvidia-smi -i 1 -pl 200
Note that some driver/GPU combinations may reset the limit when the GPU driver is reloaded, even though the systemd service correctly applies it during boot. A systemd timer that runs a few seconds after boot can handle that case.
Discussion