From ac3808fe9722a9cec201adc897b63924c9021038 Mon Sep 17 00:00:00 2001 From: rays Date: Sun, 18 Oct 2026 17:41:38 +0000 Subject: [PATCH] Build with line tables only: a test build no longer runs Tower out of memory Linking ipx's 431 MB test binary took Tower, 31 GB with no swap and 4 GB free beside its containers, into page-fault thrashing for 54 minutes: load 160 with the CPU idle and 130 processes blocked. Line tables for our crates and no debug info for dependencies make it 109 MB, built in 2m14s with load at 20 and 6.5 GB left. CLAUDE.md says to watch memory beside the load. Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 6 ++++++ Cargo.toml | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 0052207..ffe1b77 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -202,6 +202,12 @@ session was stopped. So: until the change is done; the whole workspace's once, at the end. * Builds and test binaries live under `target/`, a link to `/mnt/fast`; linking through `/mnt/user` (FUSE) once took the load to 248 on its own. +* **Memory is the tighter limit.** Tower has 31 GB, no swap, and the containers leave about 4-7 + GB. A build past that stalls everything on page faults: load 160 with the CPU idle and the + disks quiet, many processes blocked (`node_procs_blocked`, `node_vmstat_pgmajfault`). On + 2026-10-18 linking a 431 MB test binary did it for 54 minutes. So `[profile.dev]` keeps only + line tables and dependencies no debug info; keep it that way, and look at `MemAvailable` beside + the load. The Rust is formatted by rustfmt (`rustfmt.toml`) and kept free of clippy's warnings. A clone turns on the hook once: `git config core.hooksPath .githooks`; and `git config blame.ignoreRevsFile diff --git a/Cargo.toml b/Cargo.toml index 83d7843..6dac8e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,3 +42,12 @@ tracing = "0.1.44" tracing-opentelemetry = { version = "0.34", default-features = false } tracing-subscriber = { version = "0.3.23", features = ["env-filter", "json"] } url = "2.5.8" + +# Backtraces keep file and line; the full debug info made a 431 MB test binary whose link ran +# Tower, which has no swap, out of memory and stalled it for most of an hour (2026-10-18). +[profile.dev] +debug = "line-tables-only" + +# Nobody steps through dependencies. +[profile.dev.package."*"] +debug = false