Fix vLLM RuntimeError: Free memory on device is less than desired GPU memory utilization (--gpu-memory-utilization)
ValueError: Free memory on device (X/Y GiB) on startup is less than desired GPU memory utilization (0.9, Z GiB)
Root Cause & Memory Allocation Mechanics
Unlike relative memory flags that take 90% of *currently free* VRAM, vLLM's `--gpu-memory-utilization` parameter (default `0.90`) specifies a fraction of *total physical* GPU capacity (`total_gpu_memory * 0.90`). On a 24.0 GiB RTX 3090 or RTX 4090, `0.90` demands at least `21.60 GiB` of completely untouched VRAM at startup. If Ubuntu `gnome-shell`/`Xorg`, Windows Desktop Window Manager, or a lingering `VLLM::EngineCore` child process from a `Ctrl+C` interrupt is holding `2.8 GiB` (`21.2 GiB` free), vLLM's pre-flight check (`free_gpu_memory < total_gpu_memory * utilization`) immediately aborts with a `ValueError`.
Exact CLI Remediation Commands
# Inspect and unload background Ollama models occupying VRAM
ollama ps
ollama stop
# Or stop the background service completely before launching vLLM:
sudo systemctl stop ollama
# Find and terminate zombie CUDA processes holding GPU memory on Linux
nvidia-smi
sudo fuser -v /dev/nvidia* | awk '{for(i=1;i<=NF;i++) if ($i ~ /^[0-9]+$/) print $i}' | xargs -r kill -9
# Lower --gpu-memory-utilization to match actual free VRAM after OS overhead
vllm serve model \
--gpu-memory-utilization 0.82 \
--max-model-len 8192 \
--kv-cache-dtype fp8
Upgrade VRAM on Amazon
If software quantization cannot bridge your memory deficit, explore 16GBโ24GB GPUs.
Rent Cloud GPUs on RunPod & Vast.ai
Eliminate local VRAM limits immediately by running large workloads on 80GB A100 or H100 pods.
Frequently Asked Questions
Why does nvidia-smi show 0 processes on Windows/WSL2 even when vLLM reports 3 GiB used?
Inside WSL2, `nvidia-smi` cannot list Windows host processes (such as Chrome hardware acceleration, Discord, or Windows DWM) that share the WDDM GPU memory pool. Open Windows Task Manager -> Performance -> GPU to see host VRAM usage.
How do I clean up zombie vLLM ray or multiprocessing workers after a crash?
Run `pkill -9 -f 'vllm|VLLM|ray'` in your Linux terminal, then verify `nvidia-smi` reports `< 500 MiB` used before restarting `vllm serve`.
Verify Your Hardware Memory Math
Use the GPU Garden Matchmaker to calculate exact KV-cache footprints and avoid future OOM crashes.
Open Interactive Calculator โ