{"slug": "nvoc-linux-overclocking-gains-multi-gpu-support-scripting-and-is-improved-for-ai", "title": "nvoc: linux overclocking gains multi GPU support, scripting, and is improved for ai use", "summary": "NVOC, an open-source Linux tool for overclocking NVIDIA GPUs, has reached version 0.3.0 with multi-GPU support, machine-readable JSON output, and improved memory overclocking for AI workloads. The tool now supports targeting specific GPUs by index, UUID, name substring, or regex, and includes a systemd service for applying settings at boot. Experimental support for Ada Lovelace and Ampere architectures is available in draft pull requests.", "body_md": "The latest version has focused on overclocking for running local LLMs (AI). Primarily better memory OC support, and improved support for targeting mixed GPU models in a single system. Read on.\n\nBack in September I posted about [NVOC - NVIDIA GPU Overclocking for Linux](https://github.com/martinstark/nvoc/), an ergonomic cli tool for overclocking and undervolting RTX 50-series cards on Linux.\n\nThe tool is at v0.3.0 now. It picked up multi-GPU support, machine-readable output, a few more cards, and a clean way to apply settings at boot.\n\nThe first release assumed you had one card and operated on device 0. There was no way to point it at a specific GPU in a multi-card system.\n\nThere is now a `-d/--device`\n\nflag. The simplest form takes an index, or a comma separated list of them:\n\n```\n# one card\nsudo nvoc -d 1 -o 856\n\n# two specific cards\nsudo nvoc -d 0,1 -c 200,2820 -o 856 -m 2000 -p 105\n\n# everything in the box\nsudo nvoc -d all -o 200\n```\n\nIndices are convenient until you reboot and they shuffle. NVML does not promise they stay put, so for anything you want to survive a restart, select by something stable.\n\nYou can target a card by UUID, by a substring of its name, or by a regex against the name:\n\n```\n# stable across reboots\nsudo nvoc -d GPU-1234... -o 856\n\n# case-insensitive substring on the device name\nsudo nvoc -d name:5090 -o 856\nsudo nvoc -d \"n:5060 ti\" -o 100\n\n# regex, for a mix of models\nsudo nvoc -d \"regex:RTX 50[89]0\" -o 856\nsudo nvoc -d \"r:5060( Ti)?\" -o 100\n```\n\nIn a box with a 5090 and a couple of 5060 Ti, `name:5090`\n\nis easier than working out which index the driver handed each card this boot.\n\nTo select a card you first need to know what is in the machine. `nvoc list`\n\nprints the index, name, and UUID of every GPU it can read:\n\n``` bash\n$ nvoc list\n0 - NVIDIA GeForce RTX 5090 - GPU-1234...\n```\n\nIt skips devices it cannot read instead of falling over on them, so one flaky card does not take the whole listing down with it.\n\n`info`\n\nand `list`\n\nboth take `--json`\n\nnow, which is what you need to drive nvoc from a script rather than by hand:\n\n```\nnvoc info --json\nnvoc list --json\n```\n\nThere is also `nvoc list --uuid`\n\n, which prints just the UUIDs, one per line. Put the two together and you can apply the same settings to every card by UUID without hardcoding anything:\n\n```\nfor uuid in $(nvoc list --uuid); do\n  sudo nvoc -d \"$uuid\" -o 856 -m 2000 -p 105\ndone\n```\n\n(`-d all`\n\ndoes the same in one shot. The loop earns its keep when you want different values per card.)\n\nThe original gated on the card being an RTX 50-series part by matching its name. That was lazy, and it locked out the RTX PRO Blackwell cards, which are the same architecture wearing a different name.\n\nnvoc now asks NVML for the architecture directly and accepts anything Blackwell, so the workstation cards work too. It is still Blackwell only, though.\n\nThere is experimental support for Ada Lovelace (RTX 4060, 4070, 4080, 4090) and Ampere (RTX 3050, 3060, 3070, 3080, 3090) already, but it needs testing on hardware I do not have. If you own one of those cards, trying the relevant branch and reporting your results would be appreciated.\n\nDraft PRs: [Ada Lovelace (40-series)](https://github.com/martinstark/nvoc/pull/12) and [Ampere (30-series)](https://github.com/martinstark/nvoc/pull/13).\n\nOverclock settings do not persist. Reboot and you are back at stock. A systemd oneshot service reapplies them automatically:\n\n```\n# /etc/systemd/system/gpu-oc.service\n[Unit]\nDescription=GPU overclock settings\nAfter=multi-user.target\n\n[Service]\nType=oneshot\nExecStart=/usr/bin/nvoc -c 200,2820 -o 856 -m 2000 -p 105\n\n[Install]\nWantedBy=multi-user.target\nsudo systemctl daemon-reload\nsudo systemctl enable --now gpu-oc.service\n```\n\nOn a multi-GPU box, pin by UUID or model rather than index, for the reasons above. The README has the full walkthrough.\n\nIf you are on Arch, it is in the AUR now:\n\n```\nparu -S nvoc-cli\n```\n\nBuilding from source still works the same way with `cargo build --release`\n\n.\n\n`reset`\n\nputs clocks back through NVML directly, instead of the slightly hacky idle-clock trick the first version leaned on, and it attempts every reset before reporting what failed rather than bailing on the first error.`--dry-run`\n\nno longer needs root, since previewing a change should not require privileges to do nothing.`info`\n\nshows the memory clock offset next to the graphics one now.`nvoc list`\n\ninstead of leaving you to guess.\n\n``` bash\n$ nvoc info\ndriver: 595.71.05\ngpu 0: NVIDIA GeForce RTX 5090\ngpu clock: 1080MHz\ngpu offset: 856MHz\nmem clock: 810MHz\nmem offset: 2000MHz\ntemp: 52°C\npower: 28W\npower limit: 600W (104%)\npower range: 400W-575W (600W hard limit)\n```\n\nRepo and issues: [https://github.com/martinstark/nvoc/](https://github.com/martinstark/nvoc/)", "url": "https://wpnews.pro/news/nvoc-linux-overclocking-gains-multi-gpu-support-scripting-and-is-improved-for-ai", "canonical_source": "https://dev.to/martinstark/nvoc-linux-overclocking-gains-multi-gpu-support-scripting-and-is-improved-for-ai-use-33o", "published_at": "2026-06-26 20:53:08+00:00", "updated_at": "2026-06-26 21:34:55.046598+00:00", "lang": "en", "topics": ["developer-tools", "ai-infrastructure", "machine-learning"], "entities": ["NVOC", "NVIDIA", "Linux", "RTX 50-series", "Blackwell", "Ada Lovelace", "Ampere", "AUR"], "alternates": {"html": "https://wpnews.pro/news/nvoc-linux-overclocking-gains-multi-gpu-support-scripting-and-is-improved-for-ai", "markdown": "https://wpnews.pro/news/nvoc-linux-overclocking-gains-multi-gpu-support-scripting-and-is-improved-for-ai.md", "text": "https://wpnews.pro/news/nvoc-linux-overclocking-gains-multi-gpu-support-scripting-and-is-improved-for-ai.txt", "jsonld": "https://wpnews.pro/news/nvoc-linux-overclocking-gains-multi-gpu-support-scripting-and-is-improved-for-ai.jsonld"}}