https://github.com/martinstark/nvoc/
I got tired of having to create multi-line scripts for applying a semblance of overclocking/undervolting on Linux, so I wrote a cli app that does it in a single line, example for 5090:
sudo nvoc -c 200,2820 -o 900 -m 3000 -p 105
-c = min,max core clocks
-o = graphics offset
-m = memory offset
-p = power limit
Since it's only possible to set a full curve offset on Linux (there is no per-voltage offset like in MSI Afterburner), and I don't want my idle clocks to be ~1100mhz, I wanted a utility to quickly apply and reset the OC when I need it.
Since NVIDIA kindly removed the ability to query GPU voltage from their Linux APIs I think the only way to simulate MSI Afterburner-like behaviour, where you can have default idle clocks (200mhz) and have an offset for higher load scenarios, would be to set up an elevated service that applies the OC as soon as the GPU goes above ~2000mhz, and resets the OC if the clocks drop down below 2000mhz for a number of seconds.
Functionality
# Show GPU information
nvoc info
# OC
sudo nvoc -c MIN,MAX -o OFFSET -m MEM_OFFSET -p POWER_LIMIT
# Reset
sudo nvoc reset
# Dry Run
nvoc -c 200,2800 --dry-run
info output:
$ nvoc info
Driver 580.82.09
0: NVIDIA GeForce RTX 5090
Blackwell v16777240
GPU: 1177MHz
GPU Offset: 960MHz
Mem: 15501MHz
Temp: 56°C
Power: 45W
Power Limit: 600W (104% of default)
Power Range: 400W-575W (hard limit: 600W)
Top comments (0)