FYI: main-n268827-75464941dc17 GENERIC-NODEBUG UFS-based poudriere bulk context got 4 "swap_pager: cannot allocate bio"

From: Mark Millard <marklmi_at_yahoo.com>
Date: Sun, 24 Mar 2024 13:02:56 UTC
Context: I'm deliberately testing building example poudriere-devel
configurations with only 2 GiBytes of RAM and RAM+SWAP == 8.5 GiBytes,
SWAP on a partition of its own.

# tail -3 /var/log/messages
Mar 23 16:39:38 aarch64-main-pkgs kernel: pid 37137 (conftest), jid 11, uid 0: exited on signal 11 (core dumped)
Mar 24 04:51:50 aarch64-main-pkgs kernel: swap_pager: cannot allocate bio
Mar 24 04:51:50 aarch64-main-pkgs syslogd: last message repeated 3 times

It is the first time I've seen such a message.

I've a modified top that tracks some "MaxObs" (Maximum Observed)
figures. They happened to show:

Mem:  . . . 1473Mi MaxObsActive, 477304Ki MaxObsWired, 1908Mi MaxObs(Act+Wir+Lndry)
Swap: . . . 3101Mi MaxObsUsed, 4456Mi MaxObs(Act+Lndry+SwapUsed), 4887Mi MaxObs(A+Wir+L+SU), 4933Mi (A+W+L+SU+InAct)

(The 4933Mi (A+W+L+SU+InAct) is from when 4887Mi MaxObs(A+Wir+L+SU) was
live but is not a MaxObs figure itself.)

It was paging significantly at the time, of course.

It seems to have survived okay and everything continued
to build. It got past the peak RAM+SWAP use activity.


For reference:

/usr/local/etc/poudriere.conf has . . .

NO_ZFS=yes
USE_TMPFS=data
PARALLEL_JOBS=2
ALLOW_MAKE_JOBS=yes
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

/usr/local/etc/poudriere.d/make.conf has . . .

MAKE_JOBS_NUMBER_LIMIT=2

/boot/loader.conf has . . .

vm.pageout_oom_seq=120


rust and llvm18 were building at the time. The from-scratch
bulk build is of 271 packages. 143 had already built.

llvm18 was using more RAM+SWAP than rust and was working
on some llvm-tblgen runs for AMDGPU at the time.

The swap partition in use was/is:

=>        34  1875384941     da0  GPT  (894G)
. . .
   523773952    13631488  da0p10  freebsd-swap  (6.5G)
. . .

# uname -apKU
FreeBSD aarch64-main-pkgs 15.0-CURRENT FreeBSD 15.0-CURRENT main-n268827-75464941dc17 GENERIC-NODEBUG arm64 aarch64 1500015 1500015

That is a PkgBase kernel and PkgBase world combination.
The poudriere bulk jail is also 75464941dc17 but was
via the artifact build materials.

The 2 GiBytes is via the RPi4B config.txt having
total_mem=2048 . (I've no access to an aarch64 with
2 GiBytes of actual RAM.)

The media is USB3. It happens to be U.2 Optane 960GB
media via a USB3 adapter for U.2 . The UFS partition
was/is:

   537405440  1337979528   da0p9  freebsd-ufs  (638G)


===
Mark Millard
marklmi at yahoo.com