CLI tool for undervolting NVIDIA gpu on Linux
Tip
nvuv -h
First check your GPU's supported power limits, clock and offset ranges
> nvuv get w
power limit: 250W (default: 250W, range: 175..250W)
> nvuv get gc
gpu clock range: 200..3000MHz
> nvuv get mc
memory clock range: 400..15000MHz
> nvuv get go
gpu clock offset: 0MHz (-1000..1000)
> nvuv get mo
memory clock offset: 0MHz (-2000..6000)
# or in one command listing all P-states
> nvuv get pscTip
Use -g GPU_INDEX to set a specific GPU if you have multiple
Then tune - root required
# Set power limit to 175 W
> sudo nvuv set w 175
# Lock gpu clock between 200..2400 MHz
> sudo nvuv set gl 2400 200
# If needed lock memory clock with `ml`
# Set gpu clock offset to +200 MHz (support negative)
> sudo nvuv set go 200
# Set memory clock offset to +500 MHz
> sudo nvuv set mo 500Important
Settings changes do not survive reboot/resume or driver reload.
For this, a systemd service is provided to apply a config
automatically (see below).
nvuv can apply settings from a config file, default is /etc/nvuv/nvuv.toml.
Edit the file to set desired settings:
# comment any property to keep the default
[[gpu]]
power_limit = 175 # W
gpu_offset = 200 # MHz
mem_offset = 500
[gpu.gpu_locked_clocks]
# comment min value to use the lowest default freq
min = 200 # MHz
max = 2400
# if you want to lock memory clock uncomment
# [gpu.mem_locked_clocks]
# min = 123
# max = 1234
# if multi GPUs add more section as needed
# [[gpu]]
# …Tip
Use --config /path/to/config.toml to specify a custom config file
Check the config is valid:
nvuv cfgTo apply the config immediately - root required
sudo nvuv applycfgTo apply the config at startup and after resume/driver reload, enable the provided systemd service:
sudo systemctl enable --now nvuv.serviceIf needed, to use a custom file, override the service
ExecStart=/usr/bin/nvuv --config /path/to/config.tomlnvuv is a thin wrapper around NVIDIA's NVML library
trad' coded with my human hands
NVIDIA does not expose direct voltage control on Linux (unlike on
Windows and popular tools like MSI Afterburner).
Voltage-freq curve is locked at driver level.
We have to trick and use a technique: indirect undervolting
- Lock the GPU's maximum clock speed
- Apply a positive clock offset (overclocking) to the locked range
Result: the GPU runs at (roughly) the same performance with lower voltage and power draw, reducing temp and fan noise
Apache License 2.0