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 <noreply@anthropic.com>
This commit is contained in:
2026-10-18 17:41:38 +00:00
parent 341d880e13
commit ac3808fe97
2 changed files with 15 additions and 0 deletions

View File

@@ -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

View File

@@ -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