From Newsgroup: muc.lists.freebsd.ports
On 9/15/26 16:50, Yuri wrote:
I need to run poudriere and other dev things on a arm64 machine with
only 16GB or RAM.
It can build llvm, but it can't build rust*, chromium, and some other extra-large packages.
At least for lang/rust , it seems likely that there is more to the
story, such as how to configure such that rust builds with less RAM.
) Total space: RAM+SWAP ?
) UFS vs. ZFS ?
) What value of vm.pageout_oom_seq ?
) How many FreeBSD CPUs? How many parallel builders?
) Do you use ALLOW_MAKE_JOBS= with no MAKE_JOBS_NUMBER_LIMIT or the
like? (Or: ALLOW_MAKE_JOBS_PACKAGES ?) What value?
) Do you have USE_TMPFS=all (or other RAM+SWAP intensive values)
--but not use TMPFS_BACKLIST to avoid tmpfs requiring huge RAM_SWAP
all to itself for rust? (The file system space is 30 GiBytes these
days as I remember.)
) Do you use MUTUALLY_EXCLUSIVE_BUILD_PACKAGES (or just a single
builder)?
) Any non-default LTO use?
Sorry for the age (early 2024) of the below 2 GiByte RAM armv7 example
but it is the most recent such "small RAM" experiment that I found in my records . . .
More than rust was built. It had 3.6 GiBytes of SWAP (so 5.6 GiBytes==RAM+SWAP), in a UFS context (no ZFS in use). Also, this was
doing my normal armv7 (and aarch64) style of devel/llvm* build: OPTION'd
to BE_NATIVE instead of BE_STANDARD and OPTION'd to not build MLIR. 4
FreeBSD CPUs (i.e, 4 Cortext-A7 cores).
USE_TMPFS=no
PARALLEL_JOBS=2
ALLOW_MAKE_JOBS=yes
MAKE_JOB_NUMBER_LIMIT=2
MAX_EXECUTION_TIME=432000
NOHANG_TIME=432000
MAX_EXECUTION_TIME_EXTRACT=14400
MAX_EXECUTION_TIME_INSTALL=14400
MAX_EXECUTION_TIME_PACKAGE=57600
MAX_EXECUTION_TIME_DEINSTALL=14400
Also the sysctl: vm.pageout_oom_seq=120
The "what builds took over an hour" summary from the 265 packages built was:
<[01:51:31] [01] [01:00:07] Finished lang/perl5.36 | perl5-5.36.3_1: Success [08:55:35] [02] [03:08:09] Finished devel/icu | icu-74.2,1: Success
[13:17:38] [02] [01:28:32] Finished lang/ruby31 | ruby-3.1.4_1,1: Success [14:17:44] [01] [09:20:55] Finished devel/cmake-core |
cmake-core-3.28.3: Success
[4D:01:03:43] [02] [3D:08:48:53] Finished lang/rust | rust-1.76.0: Success [4D:06:26:24] [02] [03:09:35] Finished devel/binutils@native | binutils-2.40_5,1: Success
[4D:14:54:31] [02] [03:38:55] Finished devel/aarch64-none-elf-gcc | aarch64-none-elf-gcc-11.3.0_3: Success
[4D:16:13:00] [01] [4D:01:55:03] Finished devel/llvm18@default | llvm18-18.1.0.r3: Success
[4D:18:05:58] [02] [03:11:00] Finished devel/arm-none-eabi-gcc | arm-none-eabi-gcc-11.3.0_3: Success
[4D:23:00:13] [01] [06:46:06] Finished devel/boost-libs |
boost-libs-1.84.0: Success
[5D:00:16:39] [01] [01:15:53] Finished textproc/source-highlight | source-highlight-3.1.9_9: Success
[5D:01:17:24] [02] [07:10:52] Finished lang/gcc13 | gcc13-13.2.0_4: Success [5D:09:38:14] [01] [05:56:48] Finished devel/freebsd-gcc13@armv7 | armv7-gcc13-13.2.0_1: Success
[5D:10:18:58] [02] [05:44:02] Finished devel/gdb@py39 | gdb-14.1_2: Success [5D:10:31:56] Stopping 2 builders
[main-CA7-default] [2024-03-06_03h15m10s] [committing] Queued: 265
Built: 265 Failed: 0 Skipped: 0 Ignored: 0 Fetched: 0 Tobuild: 0
Time: 5D:10:31:55>
So, the rust build happened during the llvm18 build:
[4D:01:03:43] [02] [3D:08:48:53] (rust-1.76.0)
[4D:16:13:00] [01] [4D:01:55:03] (llvm18-18.1.0.r3)
and both completed.
For reference: 2794Mi MaxObs(Act+Wir+Lndry+SwapUsed) ("MaxObs": short
for "Maximum Observed"). So, about half of the 5.6 GiBytes RAM+SWAP.
I expect rust can still be built with less than 8 GiBytes of RAM --but
I've no modern evidence. There might be other properties of such a build
that are not nice, but that would be a different issue.
With aarch64, SWAP<=3.6*RAM avoids warnings about potential mis-tuning.
So RAM+SWAP=4.6*RAM would be an example, over 36 GiBytes for RAM+SWAP
for 8 GiBytes of RAM.
(I always avoid "spinning rust" media being involved.)
Poudriere in QEMU can't build rust, and not even python312.
I need rust-1.98.1.pkg for 15/aarch64 and 16/aarch64.
The rust-1.98.1.pkg for 16 is ready in the builder but the builder is
slow and it would take 5 more days to finish the batch.
Questions:
1. Is it possible to download built packages directly from builder servers? 2. Is there a clean way to add such packages into Poudriere? Do I drop
the package file into the packages/**/All folder?
Thanks,
Yuri
--
===
Mark Millard
marklmi at yahoo.com
--
Posted automagically by a mail2news gateway at muc.de e.V.
Please direct questions, flames, donations, etc. to
news-admin@muc.de
--- Synchronet 3.22a-Linux NewsLink 1.2