Scott Hanselman's gputaskman Finally Explains Where Windows GPU Memory Goes
Scott Hanselman's gputaskman is a terminal UI that breaks down GPU memory by model weights, KV cache, runtimes, and shared surfaces on Windows.
- Scott Hanselman released gputaskman, an MIT-licensed terminal GPU monitor for Windows NVIDIA systems.
- Breaks down per-process VRAM into model weights, KV cache, runtimes, and shared compositor surfaces.
- Identifies loaded models via GGUF headers, mapped files, and local APIs from llama.cpp, Ollama, and LM Studio.
- GGUF weight and KV estimates matched runtime logs exactly on Qwen3-0.6B spot checks.
- Ships as portable x64 and ARM64 ZIPs or installable via
uv run --locked gputaskman. - Offers
--oncetext and--jsonsnapshots for scripting dashboards and CI pipelines.
Windows Task Manager can report 15 GB of GPU memory in use while leaving the allocation unexplained. Model weights, a large-language model’s key-value (KV) cache, browser compositor surfaces, and GPU-accessible system RAM appear in separate counters or remain difficult to connect. Scott Hanselman has released the open-source gputaskman repository to gather those signals in one terminal interface.
The MIT-licensed app is written in Python with Textual and targets NVIDIA GPUs on Windows. It is available as a portable Windows ZIP or a source checkout. Its main use is diagnosing local AI workloads that exceed VRAM, use unexpectedly large KV caches, or share the GPU with other applications.
One screen, three layers
The terminal interface organizes its telemetry into device, process, and model views:
| View | Reported data |
|---|---|
| Device | VRAM capacity and use, GPU and memory activity, PCIe traffic, temperature, power, video-engine clock, and historical charts. |
| Process | Local GPU memory, GPU-accessible system RAM, estimated committed memory outside local VRAM, engine activity, and detected runtimes such as CUDA, Vulkan, Direct3D, ggml, and ONNX Runtime. |
| Model | Model identity, supporting evidence, architecture, layer count, weight size, quantization format, estimated KV-cache cost, and buffer sizes extracted from compatible load logs. The KV cache stores attention state and usually grows with context length. |
The live collector also supports automation. The --once option prints one text snapshot, while --json emits structured data from the same collector used by the interface. Both modes can feed diagnostic scripts, dashboards, and CI logs.
This story is for Pro members
You've reached the end of the free preview. Upgrade to AlphaSignal Pro to read the full article - and everything else behind the paywall.