Skip to content

Automatic disk-pressure GC didn't trigger; volume reached 99% before manual GC #179

@schickling-assistant

Description

@schickling-assistant

Observed

A macOS host running Determinate Nix reached 99% disk usage on its root volume before any automatic GC fired. Running nix-collect-garbage -d manually then freed 268.5 GiB across 26,023 store paths in a single pass on a ~927 GiB volume (used dropped from ~916 GiB to ~627 GiB; free climbed from ~11 GiB to ~300 GiB).

There were no GC-related entries in determinate-nixd logs (log show --predicate 'process == "determinate-nixd"' --last 7d) leading up to this.

Expected

Per the docs and prior discussion (e.g. #169), the managed GC strategy is "automatic" / disk-pressure-based, intended to keep ~5–20% free. On a ~927 GiB volume that would mean triggering somewhere around 46–185 GiB free; instead it sat at <2% free until manually invoked.

Environment

  • Determinate Nix daemon + client: 3.17.1 (happy to retest on 3.18.1 if the strategy/threshold changed)
  • macOS 26 (arm64)
  • Single APFS volume, ~927 GiB
  • /etc/determinate/config.json contains only a builder block; no GC overrides
  • nix-darwin managed; no explicit nix.gc.* set

Questions

  1. What is the actual trigger condition for the disk-pressure GC in the current implementation?
  2. Is there a way for an operator to inspect the daemon's last GC decision / next-trigger threshold?
  3. Is there a known failure mode where the watcher silently stops?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions