ComfyUI Node

Registry Snapshot

The whole VRAM residency registry, dumped to JSON

By xmarre·Created 5 months ago·Updated 5 months ago· 2
Registry Snapshot
    • registry_json

    Registry Snapshot is the pack's big-picture observability node: no inputs, one output, and that output is a formatted JSON dump of everything the residency system currently knows. It's the "show me all of it" node, the one you reach for when you want to understand what ComfyUI is holding in VRAM and why.

    The output (registry_json) is a composite payload with three sections:

    • policy - the active global residency policy (legacy, balanced, prefer_gpu, or sticky_gpu).
    • entries - the native registry: every tracked ComfyUI-managed object. Each entry carries entry_id, kind, source_path / basename, sticky, priority, created_at, last_touched, loaded_bytes / total_bytes, load_device, offload_device, current_device, last_method, and alive. The last_method field is gold for debugging - it records whether each load used direct safetensors GPU ingest, a CPU-to-CUDA fallback, a component-only load, the CPU-first torch.load() path, or a failure.
    • external_entries - compatible external cache objects discovered at runtime, currently SeedVR2's global cached DiT and VAE entries. These live outside ComfyUI's normal current_loaded_models list, so this is the only way to see those bytes at all. External entries carry cache-specific fields like cache_key, claimed (true = the cache object is currently in use), and external.

    Two things make this node genuinely different from just watching nvidia-smi. First, it shows which objects are resident and how they got loaded, not just how many bytes are free - that's the difference between "I'm out of VRAM" and "my .ckpt has been CPU-loading the whole time." Second, it surfaces external cache entries that standard tools can't see, because those objects never pass through ComfyUI's loaded-model list.

    The practical habit: connect it to a text display node, run once, read. Use Report Model/CLIP/VAE Residency when you care about one object; use this when you want the full landscape - e.g., after switching policies, to confirm the sticky_gpu auto-pins actually happened, or before a big load, to see what's going to get evicted. There's no other way to see the registry's priority ordering in one place.

    Caveats, honestly stated: this only reflects objects the registry tracks - loads through private third-party paths are invisible, and for external providers the coverage is currently SeedVR2-specific, not universal. The byte figures are estimates from file headers and runtime metadata, not nvidia-smi truth. And it's a point-in-time dump; it doesn't stream or update live, so treat it as a snapshot (the name gives it away).

    Install with the pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/xmarre/ComfyUI-GPU-Resident-Loader
    cd ComfyUI-GPU-Resident-Loader
    pip install -r requirements.txt
    

    Restart ComfyUI, or search "comfyui-gpu-resident-loader" in ComfyUI Manager.

    CategoryGPU Resident Loader/residency

    Inputs (0)

    No inputs

    Outputs (1)

    NameTypeDescription
    registry_jsonSTRING