Skip to content

Repository files navigation

VRAMHog

VRAMHog

A tiny always-on-top widget that shows which app is eating your VRAM.
Windows · NVIDIA · GPL-3.0

📖 Guide & download


Task Manager tells you your GPU is at 98%. It does not tell you that it's Stable Diffusion, not the browser. nvidia-smi won't tell you either — on a normal consumer GPU it reports N/A for per-process memory.

VRAMHog does, in a strip you can leave on screen while you work.

screenshot

What it shows

  • Per GPU — utilization %, a sparkline of the last ~2 minutes, VRAM used / total, temperature, and power draw.
  • Per process — the top apps on each GPU, with their VRAM and their GPU utilization, labelled properly (ComfyUI, Ollama, Blender) instead of a wall of identical python.exe entries.
  • Live % on the tray icon — the busiest GPU's utilization as a red number on pink, readable even with the widget hidden.
  • A splash on start, which you can turn off from the tray menu.
  • Compact view — a slim ~400×50 bar strip. Double-click the widget to toggle.
  • Minimises to the tray. Drag it anywhere; it remembers where you put it.

Install

The easy way

Download VRAMHog.exe from the latest release and double-click it. No installer, no Python, nothing written to your registry.

The app is not code-signed, so Windows SmartScreen will warn you the first time. Here's how to get past it, and how to verify the download first.

Verify your download — VRAMHog.exe v1.0.0 should hash to:

6ab70df03afdb8fbba2201553ad503a89a1de5de361aaa809b8d27ffefeabcd5
Get-FileHash .\VRAMHog.exe -Algorithm SHA256

To start it automatically with Windows: right-click the tray icon → Start with Windows.

From source

git clone https://github.com/scarylasers/VRAMHog.git
cd VRAMHog
pip install -r requirements.txt
python -m vramhog.main

Optionally, create Desktop and Start Menu shortcuts that launch it without a console window:

powershell -ExecutionPolicy Bypass -File install_shortcuts.ps1

Add -Startup to also run it at login, or -Remove to take the shortcuts away.

Requirements

  • Windows 10 or 11
  • An NVIDIA GPU with the official driver installed
  • Python 3.10+ (source install only — the .exe needs nothing)

Multiple GPUs are supported and were the reason this exists; one GPU works fine too. AMD and Intel GPUs are not supported: the per-GPU numbers come from NVIDIA's own driver library.

How it works

Consumer NVIDIA GPUs run in WDDM mode, where NVML and nvidia-smi cannot report per-process VRAM at all. So VRAMHog reads two different sources and stitches them together:

Data Source
Per-GPU util, VRAM, temp, power NVML (nvidia-ml-py)
Per-process VRAM and utilization Windows GPU performance counters via win32pdh — the same data Task Manager uses
Which counter belongs to which GPU LUID → GPU index, read from HKLM\SOFTWARE\Microsoft\DirectX

If you're tempted to simplify this to nvidia-smi: that path is a dead end on Windows. docs/DESIGN.md has the full reasoning.

Configuration

Settings live in %APPDATA%\VRAMHog\config.json:

{
  "x": 80, "y": 80,
  "interval_ms": 2000,
  "compact": false,
  "tray_percent": true,
  "splash": true
}

Lower interval_ms for snappier updates; raise it to reduce overhead. Everything else is set from the tray menu.

Adding your own app labels

Process labels are a plain list in vramhog/process_labeler.py. Each entry is (substring_to_match, friendly_label), matched case-insensitively against the process name and its full command line, first match wins:

KEYWORD_MAP = [
    ("comfyui", "ComfyUI"),
    ("my-training-script", "LoRA training"),
    ...
]

Pull requests adding labels for common tools are very welcome.

Development

pip install -e ".[dev]"
python -m pytest -q            # 26 tests, no GPU required
python -m vramhog.main --once  # print one snapshot to the console
python assets/make_icon.py --check   # verify the icon has every size
python assets/make_icon.py           # rebuild it from assets/vramhog-source.png
powershell -File build_exe.ps1 # build dist\VRAMHog.exe

The reader modules (gpu_reader, gpu_map, process_reader, process_labeler) have no Qt dependency and are unit-tested with injected inputs, so the parsing logic can be worked on without a GPU present.

License

GPL-3.0 — see LICENSE and NOTICE.md.

Use it, fork it, build on it. If you distribute your version — free or paid — you have to publish its source under the same licence, so nobody can take VRAMHog closed-source. The name and the artwork stay mine; give your fork its own.

About

A tiny always-on-top Windows widget that shows which app is eating your VRAM

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages