There is no solution at the moment and is a common complaint (about concurrent large builds). I had TMPFS_LIMIT=15 and had rust fail on me from that. Quite large...
Bryan On 5/10/2021 10:19 PM, Mark Millard wrote: > I've been using USE_TMPFS=yes (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.) > > === > Mark Millard > marklmi at yahoo.com > ( dsl-only.net went > away in early 2018-Mar) > -- Regards, Bryan Drewery
OpenPGP_signature
Description: OpenPGP digital signature