Skip to content

[Bug]: vLLM startup memory check mis-detects available VRAM (reclaimable OS memory) on UMA Systems#35313

Description

@sunil1511

馃悰 Describe the bug

Issue Observed on UMA GPUs (DGX Spark and GH200)

I have observed this bug on both DGX Spark and GH200 systems.

Problem Description

vLLM defaults to requesting 90% GPU memory utilization (--gpu-memory-utilization=0.9). While it's typically easier to achieve 90% free memory on non-UMA systems, on UMA systems the memory can be occupied by paged cache and buffers which are reclaimable by the OS.

Instead of accounting for this reclaimable memory, vLLM fails with:

ValueError: Free memory on device cuda:0 (74.9/142.5 GiB) on startup is less than desired GPU memory utilization (0.9, 128.25 GiB). Decrease GPU memory utilization or reduce GPU memory used by other processes.

Root Cause

On UMA systems, cudaMemGetInfo (which vLLM uses via pynvml) doesn't account for memory that could be reclaimed from the OS (page cache, SWAP, buffers). This causes vLLM to underestimate available GPU memory during deployment, leading to false failures even when sufficient memory would be available after OS-level reclamation.

Affected Systems

  • DGX Spark (GB10)
  • GH200
  • Other UMA Systems

Workarounds

  • Reduce --gpu-memory-utilization below 0.9 (e.g., 0.8 or 0.85)
  • Flush buffer caches before deployment (use with caution): sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'

Expected Behavior

vLLM should account for reclaimable memory on UMA systems, similar to how NVIDIA recommends checking /proc/meminfo for MemAvailable, SwapFree, and HugePages in addition to cudaMemGetInfo.

ARB: @akshaver

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions