Date: Mon, 10 May 2021 22:19:53 -0700 From: Mark Millard <marklmi@yahoo.com> To: Bryan Drewery <bdrewery@FreeBSD.org>, FreeBSD Toolchain <freebsd-toolchain@freebsd.org> Cc: FreeBSD ports <freebsd-ports@freebsd.org> Subject: ports-mgmt/poudriere-devel, lang/rust (for example), and USE_TMPFS that includes wrkdir (or yes) Message-ID: <8534A936-B9E6-4BF1-AF26-7F214D359E5C@yahoo.com> References: <8534A936-B9E6-4BF1-AF26-7F214D359E5C.ref@yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
I've been using USE_TMPFS=3Dyes (so "wrkdir data") on various systems, both ZFS (recently) and UFS (generally, even now). Only one system builds rust (in order for something else to be built), at least so far. An example of the wrkdirs tmpfs use for rust is (UFS context): # df -m | grep tmpfs Filesystem 1M-blocks Used Avail Capacity Mounted on . . . tmpfs 301422 17859 283563 6% = /usr/local/poudriere/data/.m/FBSDFSSDjail-default/01/wrkdirs . . . This was near the end but the maximum figure was probably somewhat higher than the 17 GiByte+ figure above. The context the example is from is for the only large capacity build machine that I have access to, an amd64 context. I have other build contexts as well, but, so far, none have had to deal with building rust. Rust likely would fit the 8 GiByte RAM + 24 GiByte swap aarch64 build context with USE_TMPFS including wrkdir if it was the only builder running at the time. But the existing builds for the context allow 4 builders in parallel, one per core. [This deals just fine with llvm10, llvm11, llvm12, and, gcc10 (no bootstrap) being what happens to build in parallel, even with USE_TMPFS that includes wrkdir. Rust is just uses more space all by itself.] If I end up with something that requires rust for the aarch64 builder context, is there a different technique to deal with the tradeoff other than giving up on USE_TMPFS spanning wrkdir for all other other ports/builder-instances as well, presuming the same media and partitioning (such as total swap space)? Imaginary examples could be: A) Tell poudriere that lang/rust is to be built by itself despite the general 4-builder context. B) Tell poudriere that USE_TMPFS excludes wrkdir for lang/rust's specific builder. C) . . . (good question) . . . So far all I've come up with is explicitly building lang/rust by itself first, a form of (A): # poudriere bulk -jNAME -w lang/rust # poudriere bulk -jNAME -w -f ~/origins/CA72-origins.txt (Hopefully, reliably remembering to do so.) Is there any better technique that I've not noticed? To some extent here, lang/rust is being used an example of a more general issue: Other ports could have similar issues with attempted wrkdir-included USE_TMPFS use. Note: If I build using WITH_DEBUG, the one system that I have access to that can build such a lang/rust with workdir included in USE_TMPFS shows over 130 GiBytes in the tmpfs earn the end of the builder's activity. (This is a amd64 context with 128 GiBytes of RAM and 192 GiBytes of swapping/paging space.) =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8534A936-B9E6-4BF1-AF26-7F214D359E5C>