Skip to content

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

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions