Voltkit Manual GitHub
On this page

GPU Tuner on the command line

Everything GPU Tuner does is also a command: voltkit gpu and its subcommands. Changing settings needs administrator rights, and anything you do not confirm is undone.

Commands#

CommandWhat it does
voltkit gpu / voltkit gpu showEach card with its readings and which controls it supports, with the reason for any it does not
voltkit gpu apply FILEApply settings from a JSON file, undoing them unless you confirm
voltkit gpu forget ADDRESSRemove a card's saved settings and give its fans back to the card
voltkit gpu serviceRun the background service that applies saved settings and follows fan curves
voltkit gpu recordRecord a card's readings to compare profiles later
voltkit gpu sessionsList recorded sessions, newest first
voltkit gpu compare A BCompare two sessions (a file, or a number from sessions)
voltkit gpu adviseSuggest the power limit that saves the most for almost the same speed
voltkit gpu idleFind out why the video memory stays at a high clock while idle
voltkit gpu checkCheck Voltkit's readings against nvidia-smi and measure what monitoring costs
voltkit gpu profiles listList saved profiles and the rules that switch them
voltkit gpu profiles activeShow which profile each card is using now
voltkit gpu profiles install FILEInstall profiles and rules from a JSON file

Apply settings: voltkit gpu apply#

sudo voltkit gpu apply settings.json            # asks to keep, undoes after 15 s
sudo voltkit gpu apply settings.json --yes      # keep without asking
sudo voltkit gpu apply settings.json --confirm 30   # wait 30 seconds for confirmation
sudo voltkit gpu apply settings.json --save     # keep after restarts; run fan curves in the service
cat settings.json | sudo voltkit gpu apply -    # read from standard input

The file holds the settings for one card. Anything you leave out is not touched:

{
  "gpu": "0000:03:00.0",
  "power_limit_w": 220,
  "fan": { "mode": "curve", "points": [
      { "temp_c": 30, "speed_pct": 25 },
      { "temp_c": 60, "speed_pct": 50 },
      { "temp_c": 85, "speed_pct": 100 } ] },
  "temperature_target_c": 75,
  "core_offset_mhz": -100,
  "mem_offset_mhz": 200,
  "voltage_offset_mv": -50
}
KeyMeaning
gpuThe card's PCI address, as voltkit gpu shows it
power_limit_wPower limit in watts, within the card's range
fan{"mode":"auto"}, {"mode":"fixed","speed_pct":50} or {"mode":"curve","points":[…],"sensor":…,"fans":[…]}
temperature_target_c40 to 100
core_offset_mhz, mem_offset_mhzClock offsets
voltage_offset_mvVoltage offset
voltage_curveAMD cards with a full curve: every point as {"mhz":1450,"mv":800}, all of them
core_clock_min_mhz, core_clock_max_mhzIntel clock limits

Values the card does not allow are refused.

Profiles from a file: voltkit gpu profiles install#

The file is a list with one entry per card:

[
  {
    "gpu": "0000:03:00.0",
    "profiles": [
      { "name": "Quiet", "settings": { "gpu": "0000:03:00.0", "power_limit_w": 180 } },
      { "name": "Performance", "settings": { "gpu": "0000:03:00.0", "power_limit_w": 260 } }
    ],
    "rules": [
      { "profile": "Quiet", "conditions": [ { "when": "power_source", "on_battery": true } ] },
      { "profile": "Performance", "conditions": [ { "when": "app", "names": ["steam:1245620", "blender"] } ] }
    ],
    "default": "Quiet"
  }
]

Condition types:

whenFields
power_sourceon_battery: true or false
appnames: program names, or steam:<App ID>
workloadutil_above_pct, for_secs
temperatureabove_c

A rule can have several conditions; all must hold. Rules are tried in order. install replaces the saved profiles, turns the service on and prints Profiles installed.

Record and compare#

voltkit gpu record --seconds 120 --label Stock       # while a game or benchmark runs
voltkit gpu record --seconds 120 --label Undervolt --gpu 0000:03:00.0
voltkit gpu sessions                                 # numbered list
voltkit gpu compare 2 1                              # two sessions, by number or file
voltkit gpu advise                                   # which power limit to use

record prints a summary: duration, temperature, power, energy used, active clock per watt, the energy cost when an electricity price is set, and how often the card was held back by the power limit and by heat.

The service#

voltkit gpu service is what voltkit-gpu.service runs (installed by the package, enabled by Apply profiles or profiles install). It applies the active profile, follows the rules, runs software fan curves and returns the fans to the card's own control when it stops.

systemctl status voltkit-gpu.service
sudo systemctl disable --now voltkit-gpu.service

Check Voltkit's readings#

voltkit gpu check --seconds 10 compares what Voltkit reads (through the NVIDIA management library) with nvidia-smi taken at the same moments and reports how far apart they are, plus the CPU time and memory monitoring uses. Cards from other makers have no second source on most computers; the command says so.