Skip to main content

PenguinBurner logo NVIDIA GPU Auto Tuning Linux Tool

PyPI Python C++17 License: GPL v3 Build Coverage Sponsors Stars

Platform GPU Vulkan Proton PyPI downloads

PenguinBurner tunes your NVIDIA GPU on Linux, starting with automatic and adaptive undervolting, plus an optional in-game monitoring overlay with a PC latency meter and pre-frame-generation FPS that updates live.

You get quieter fans, lower temperatures, and lower power draw, with no manual trial and error. It tests your card under real load, finds a stable efficient setting, and can switch settings automatically as your frame rate changes.

Works on the NVIDIA proprietary driver with RTX 50 (Blackwell), RTX 40 (Ada), and RTX 30 (Ampere) cards. A recent driver is recommended.

The goal is an all-in-one package for NVIDIA on Linux that is easy to install and use, closing the feature gap with the Windows tools Linux users miss: the NVIDIA App, NVUV, and MSI Afterburner.

Install

python -m pip install --user --upgrade penguin-burner

Or install the self-hosted Flatpak:

flatpak remote-add --user --if-not-exists penguinburner https://jpietek.github.io/PenguinBurner/penguin-burner.flatpakrepo && flatpak install --user -y penguinburner io.github.jpietek.PenguinBurner

Also packaged for Fedora (COPR), Arch / CachyOS (AUR), and Ubuntu (PPA) — commands in the Install guide.

Run the GUI with penguin-burner (or pburn). Install the NVIDIA driver and CUDA first.

Quick start

  1. Install (above) with the NVIDIA driver and CUDA already set up.
  2. Launch PenguinBurner (penguin-burner).
  3. Click Setup Auto Undervolt, choose a performance bias, and let the scan find and verify a stable curve.
  4. On the Profiles tab, select the result and click Apply Selected. Toggle Silent fan curve for the quiet fan profile.
  5. Enable Persist on Startup to apply it at boot, or Apply Adaptive to switch tiers as your frame rate changes.

Automatic Tuning

Tests your card under real load and finds the most efficient stable undervolt curve for you. The sweep runs PenguinBurner's managed headless Q2RTX benchmark plus a CUDA compute test, with stability and performance checks built in. If a scan crashes mid-probe, the next run records that voltage/clock band as unsafe and can resume from saved candidates for the same tier.

Auto-UV candidate sweep

Pick a bias (Efficiency, Balanced, or Performance) and it finds the matching sweet spot, then verifies it before saving. You can also set a GPU board power limit for the scan; PenguinBurner reads the selected card's NVML power-limit range, applies the cap during Auto-UV, and saves it with the final profile so runtime/profile application restores it.

Auto-UV setup: GPU, preset, and Auto-OC targets

Read the guide

Adaptive Undervolting

Tag your saved profiles as Efficiency, Balanced, or Performance, and PenguinBurner switches between them while you play: efficient and silent when you have headroom, more clock when frames start to drop.

Profiles with the Assign Tier menu

Read the guide

PenguinBurner vs LACT (NVIDIA)

LACT is the broader, more established Linux GPU app, and it landed a working Nvidia VF curve setter before we did. It supports more brands and has deeper monitoring than we do. PenguinBurner is narrower on purpose: automatic undervolting, an in-game overlay, and adaptive switching. NVIDIA-only comparison, to the best of our knowledge:

Capability (NVIDIA) PenguinBurner LACT
Automatic undervolt search (stability + perf verified) ✅ Q2RTX + CUDA sweep ❌ manual only
Adaptive undervolt (switches tiers by frame rate)
In-game performance overlay
PC latency meter
Pre-frame-generation FPS counter (base vs FG FPS)
Manual V/F curve editor
Fan curve control ✅ auto silent curve + editor ✅ custom curves
Power limit ✅ Auto-UV + saved profiles
Steam library import 🚧 planned
Per-game tuning profiles 🚧 planned
Runtime profile switching ✅ by present-frame FPS pacing ✅ by running process / gamemode
MSI Afterburner import
Historical telemetry charts 🚧 planned (live overlay today) ✅ charts + CSV export
Detailed GPU info (VBIOS / VRAM / Vulkan / throttling) ❌ tuning-focused
Other GPU brands (AMD / Intel) ❌ NVIDIA-native, for now ✅ AMD · Intel · NVIDIA
systemd daemon · CLI / headless ✅ · ✅ ✅ · ✅

✅ available · ❌ not available · 🚧 planned/in progress

LACT monitors inside its own window (charts and CSV) and has no in-game overlay; on Linux that is usually a separate tool like MangoHud. PenguinBurner's overlay is built in.

The two interoperate via LACT export, so you can tune with PenguinBurner and run the resulting curve under LACT if you prefer.

Roadmap (planned, not yet shipped)

  • Historical data plotting — power, clocks, and FPS over time.
  • Steam library discovery — find installed games automatically.
  • Per-game tuning — save and auto-apply a profile per game.

Performance Overlay

A lightweight live on-screen readout over your game. It can visualize PC latency and pre-frame-generation FPS — things most Linux overlays can't — alongside frame-gen FPS, clocks, voltage, power, temperatures, and the active tier.

Performance overlay

Launch it with the game via PENGUIN_BURNER %command%, then toggle the fields you want. Any tuning change you make is reflected live in the overlay while you play, so you see the effect of an undervolt, clock, or fan change in real time without leaving the game.

If you want the detailed numbers behind that LAT figure, start the daemon with PENGUIN_BURNER_DUMP_LATENCY_DATA=1 in its environment. It dumps the full per-frame latency breakdown — present mode, queue depth, Reflex sleep-mode/boost, and the display/scanout split — to the daemon log, which you can capture to a file by also passing --debug-log.

Read the guide

More features

  • Profile management — apply, verify, tier, export, and clean up saved curves.
  • Curve editors — Afterburner-style manual V/F and fan curve editors with full keyboard control.
  • Silent fan curve — auto-generated quiet fan curve once the undervolt brings temperatures down.

MSI Afterburner Import

Bring your Windows MSI Afterburner profile over and import its V/F curve.

MSI Afterburner import

Point PenguinBurner at the real MSI Afterburner directory (no Afterburner binaries or profiles are bundled in this repo). Default Windows path:

C:\Program Files (x86)\MSI Afterburner

LACT Export

Export any saved V/F (and optionally fan) curve as a complete Nvidia LACT config from the Profiles view. See the Auto-UV guide for the workflow.

Run At Your Own Risk

Auto-UV makes real hardware changes — enabling persistence mode, setting board power limits, writing core/memory V/F offsets, and taking over fan control.

The Balanced and Efficiency Auto-UV profiles are ultra-defensive. Balanced at most retains the card's stock clock, probing gently for lower voltage. Efficiency just follows the stock curve on the first pass — lowering power consumption by reducing clock — then undervolts only very slightly.

Performance undervolt mode is the one that pushes past stock. On my RTX 5080, during the OC phase I sometimes get a "Vulkan device lost", which PenguinBurner catches and then reverts the problematic voltage/frequency point. Worst case is a hard system freeze and reboot — after which the blacklisted V/F point is persisted to the UV history file in your home directory, so it is not retried.

You can also define, in the Performance UV dialog, exactly which voltage/frequency point the card is pushed to over stock limits. The default is the suggested point for 30/40/50-tier GPUs, based on experiments with this and similar tools on Windows. Performance is optional anyway — OC is not mandatory.

Acknowledgements

PenguinBurner was built through agentic AI development, guided by human ideas and direction. The implementation, research, and reverse engineering were driven primarily by GPT 5.5 (OpenAI) and Claude Opus (Anthropic), with brief use of Fable (Anthropic).

  • NVIDIA — for the graphics technology that, unfortunately, lacks some features and polish on Linux.
  • Qt Project — for the excellent Qt6 UI.

Special thanks to the LACT project and Ilya Zlobintsev for pushing Linux NVIDIA tuning forward — in particular LACT #957 (Nvidia VF curve editor), merged April 18, 2026.

Support

CLI Documentation

The CLI-focused README is archived in readme-cli.md.

Start clean

Reset PenguinBurner user state for a fresh run:

rm -rf ~/.config/PenguinBurner ~/.local/share/PenguinBurner ~/.cache/PenguinBurner

Installing from a local checkout? See the Install guide.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

penguin_burner-0.5.3.tar.gz (4.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

penguin_burner-0.5.3-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (758.8 kB view details)

Uploaded Python 3manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file penguin_burner-0.5.3.tar.gz.

File metadata

  • Download URL: penguin_burner-0.5.3.tar.gz
  • Upload date:
  • Size: 4.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for penguin_burner-0.5.3.tar.gz
Algorithm Hash digest
SHA256 69e9c4c7075266b8f5aeff56867e0abfadace4ad44c59eb59983f005a8cae633
MD5 8a79855797fb29bb33ca1a07b2f97112
BLAKE2b-256 9ff10814f41d081ef6afaafb6069ef3c2f096db65c0920e0756e63b42a026a13

See more details on using hashes here.

File details

Details for the file penguin_burner-0.5.3-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for penguin_burner-0.5.3-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e852680bfb7646c7970b674037514621c28e968bef8e71df32064fffa1b73841
MD5 d791b21f86a1e1c7b2fe6a8f7b2fdf3e
BLAKE2b-256 bbbefc09dfaa83c031c5f1243d3a847d7e1a22d08f153cbffaa0f817f453a240

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page