2026 Six-Region Remote Mac Out of Disk? 1TB/2TB Upgrade vs Cache Cleanup vs Second Machine—FinOps Pick-One Decision Matrix

About 11 min read · MACCOME

Bottom line: if your dedicated remote Mac (M4 / M4 Pro) in Singapore, Japan, Korea, Hong Kong, US East, or US West keeps hitting “disk almost full” while builds slow down, this article gives a signable answer. Choose among 1TB/2TB expansion, cache governance, or a second peak machine using a pick-one decision matrix, six-step runbook, and three watermark thresholds, then tie the choice to daily, monthly, or quarterly leases. We do not repeat region-latency or full POC playbooks; we pick up where pre-production stability acceptance leaves off: whether to spend on disk or change how you use the node.

Six pain points teams misread when a remote Mac runs out of disk

  1. Treating reclaimable bloat as structural shortage. DerivedData, old Simulator runtimes, Docker layers, and Gradle caches often account for 40–70% of recoverable space. Only when a weekly cleanup still drops free space below 15% within seven days should you open the upgrade-or-second-machine discussion.
  2. Watching df percentages without directory attribution. APFS snapshots, local Time Machine snapshots, and “Other users” buckets can paint the root volume red while the real Xcode drag is a single directory growing linearly. Use layered du sampling—not a blind rm -rf.
  3. Assuming more disk fixes CPU or memory queues. When iostat shows disk utilization below 40% for long stretches yet builds stay slow, the limit is parallelism or linker memory. An M4 Pro or a second machine beats 2TB in that profile.
  4. Running Monorepo plus multiple Simulators on a 256GB baseline. Partial clone shrinks fetch size, but local intermediates and simulator images still accumulate per branch and OS version. Read alongside the Monorepo slim-down checklist instead of reinventing it.
  5. One node doing everything across six regions. Build, UI test, and signing upload on the same disk means peak weeks hit every watermark at once. The multi-machine build-pool FinOps runbook covers role split; here we decide single-node disk policy first, then whether a second machine is worth it.
  6. Monthly disk upgrades for a two-week sprint, or daily wipes for a year-long baseline. FinOps rule: predictable permanent growth fits 1TB/2TB locked with monthly or quarterly leases; short spikes fit cleanup plus a daily-rent peak machine—do not lock a year tier for fourteen days.

Dedicated remote Macs give you a clear physical disk boundary, but clarity does not auto-match workload. On Apple Silicon unified memory, disk pressure and RAM pressure often move together: parallel Simulators, Swift incremental compiles, and container layer caches raise IO and memory at once. Without a pick-one decision, teams bounce between “clean the disk again” and “add another box,” wasting lease budget and slowing releases.

The multi-region node rental cost guide answers which country and lease length to pick; this article answers first-order disk handling on the node you already chose. It complements the CocoaPods/SPM mirror and disk checklist—dependency tuning reduces false-full signals but cannot replace DerivedData and simulator asset governance.

Signal Prefer: cache governance Prefer: 1TB/2TB upgrade Prefer: second machine / Pro tier
Free space still <15% seven days after cleanup Only if du shows >30% reclaimable and standard cleanup not yet run Default: structural growth (multi-branch DerivedData) If CPU queue p95 is saturated in the same window
Single repo <8GB but 3+ Simulator OS versions Remove unused runtimes and device sets Two or more large OS images kept resident Parallel UI test workers >2
Monorepo + affected builds enabled, still full weekly Check blobless paths and cache locations Default: intermediate dirs not isolated Build and test must split disk or machine
Release spike only 10–14 days Default: cleanup + snapshot export Do not lock quarterly lease for two weeks Daily/weekly second machine is cheaper
After 2TB, iowait <8% and still slow Disk is not primary—stop expanding Veto: do not add more disk Default: compute/concurrency bottleneck
storage

Mechanism: APFS copy-on-write means deleting a large directory may not immediately restore reported free space, especially with local snapshots present. Governance must include snapshot inventory; otherwise “deleted 200GB, df only recovered 20GB” leads to a false upgrade decision.

Six-step runbook: from sampling to a signed pick-one branch

  1. Freeze the watermark baseline. Record total capacity, free percentage, main mount points; note node ID, Xcode version, and last cleanup commit (script version).
  2. Layered du sampling (top 12 directories). Sample ~/Library/Developer, DerivedData, CoreSimulator, ~/.gradle, ~/Library/Containers, etc.; export CSV for audit.
  3. Run the standard cleanup pack. In order: DerivedData (keep current scheme if needed), unused Simulator runtimes, dangling Docker images, old Archives (confirm with release owner).
  4. Retest 24h slope. If free space drops more than three percentage points per day without an explained release event, mark structural growth.
  5. Map to the matrix branch. Cache governance / 1TB·2TB / second machine—do not deploy cleanup + upgrade + extra machine without written rationale.
  6. Lock FinOps notes and lease term. Structural → monthly/quarterly + upgrade; short peak → daily/weekly second machine; record review date in the ledger.
bash
# Top directory sampling on the remote Mac (replace WORK path)
export WORK="$HOME"
df -h /
echo "---- top dirs under Library/Developer ----"
du -hd 1 "$HOME/Library/Developer" 2>/dev/null | sort -hr | head -12
echo "---- DerivedData total ----"
du -sh "$HOME/Library/Developer/Xcode/DerivedData" 2>/dev/null
echo "---- CoreSimulator ----"
du -sh "$HOME/Library/Developer/CoreSimulator" 2>/dev/null

Three quantitative thresholds for the review meeting (replace constants with your baseline)

  • Cleanup yield ratio. Standard cleanup should reclaim at least 18% of currently used space; below 12% means growth is structural—enter the upgrade/second-machine matrix instead of repeating cleanup.
  • Free-space red line. Production build hosts should keep ≥20% free; below 15%, block full Archive plus parallel UI tests (share gate fields with the POC scale-up KPI matrix).
  • Post-upgrade IO check. Within 48h after 1TB/2TB expansion, if median disk busy% stays below 25% and build time does not improve, close the “add more disk” option in review and inspect CPU, memory, and artifact RTT.

Close: do not hide architecture splits behind “one more disk”

On six-region remote Macs, disk decisions come down to separating incompressible working sets from compressible caches. Reclaimable → govern; not reclaimable → upgrade or split machines; not reclaimable and compute-saturated → stop buying disk—that only comforts a queue bottleneck.

Self-hosted Mac colocation or short-lived cloud instances often split “disk” and “ops” into two invoices, so teams underestimate the compound cost of snapshots, simulator assets, and shared disks. Laptop handoffs hit disk and sleep policy at the same time during release weeks. For teams that need dedicated Apple Silicon, predictable disk tiers, and six-region nodes, attaching this matrix to procurement and aligning 1TB/2TB with lease terms on MACCOME Mac cloud usually beats ad-hoc disk adds or blind second machines—and gives CI and on-call the same watermark language.

Once you lock upgrade or second machine, bring region and lease line items into the same review. Pricing and cycle details stay on the product page; keep stability acceptance and Monorepo articles as attachments so release week discusses capacity and pipeline together.

FAQ

After clearing DerivedData the disk is still full—upgrade or add a machine?

If free space drops below 15% again within seven days and Developer subdirectories still dominate du output, evaluate 1TB/2TB with a monthly lease. If CPU and memory queues saturate in the same window, add a second machine per the build-pool article. Tiers and pricing are on the Mac mini rental rates page.

Builds are still slow after expanding to 2TB—is that a disk problem?

Not necessarily. When IO stays idle while compile times stay high, return to stability acceptance and architecture matrices to separate compute from network. Operational details live in the cloud Mac support help center.