FYI: aarch64 main [so: 14] system hung up with a large amount of memory in use (given the RAM+SWAP configuration) but lots of swap left

From: Mark Millard via freebsd-current <freebsd-current_at_freebsd.org>
Date: Sat, 13 Nov 2021 11:20:55 UTC
While attempting to see if I could repeat a bugzilla report in a
somewhat different context, I has the system hang up to the
point that ^C and ^Z did not work and ^T did not echo out what
would be expected for poudriere (or even the kernel backtrace).
I was able to escape to ddb.

The context was Cortex-A72 based aarch64 system using:

# poudriere jail -jmain-CA7 -i
Jail name:         main-CA7
Jail version:      14.0-CURRENT
Jail arch:         arm.armv7
Jail method:       null
Jail mount:        /usr/obj/DESTDIRs/main-CA7-poud
Jail fs:           
Jail updated:      2021-06-27 17:58:33
Jail pkgbase:      disabled

# uname -apKU
FreeBSD CA72_16Gp_ZFS 14.0-CURRENT FreeBSD 14.0-CURRENT #18 main-n250455-890cae197737-dirty: Thu Nov  4 13:43:17 PDT 2021     root@CA72_16Gp_ZFS:/usr/obj/BUILDs/main-CA72-nodbg-clang/usr/main-src/arm64.aarch64/sys/GENERIC-NODBG-CA72  arm64 aarch64 1400040 1400040

It is a non-debug build (but with symbols).

16 cortex-A72 cores, 64 GiBytes RAM, root on ZFS, 251904Mi swap,
USE_TMPFS=all in use. ALLOW_PARALLEL_JOBS= in use too.
(Mentioned only for context: I've no specific evidence if other
contexts would also have failed, say, USE+TMPFS="data" or UFS.)

When I looked around at the db> prompts I noticed one
oddity (I'm no expert at such inspections):

db> show allchains
. . .
chain 92:
 thread 100671 (pid 15928, make) is blocked on lockmgr 0%A%0EXCL
 thread 100671 (pid 15928, make) is blocked on lockmgr 0%A%0EXCL
 thread 100671 (pid 15928, make) is blocked on lockmgr 0%A%0EXCL
 thread 100671 (pid 15928, make) is blocked on lockmgr 0%A%0EXCL
 thread 100671 (pid 15928, make) is blocked on lockmgr 0%A%0EXCL
 thread 100671 (pid 15928, make) is blocked on lockmgr 0%A%0EXCL
. . . (thousands of more instances of that line content,
       I never found the last) . . .

My patched top (that reports some "maximum observed" (MaxObs???)
figures) was showing (having hung up with the system):

last pid: 18816;  load averages: 10.11, 16.76, 18.73 MaxObs: 115.65, 103.13, 96.36                                                                                              up 8+06:52:04  20:30:57
324 threads:   17 running, 305 sleeping, 2 waiting, 147 MaxObsRunning
CPU:  2.8% user,  0.0% nice, 97.1% system,  0.0% interrupt,  0.0% idle
Mem: 19044Ki Active, 331776B Inact, 73728B Laundry, 6950Mi Wired, 69632B Buf, 558860Ki Free, 47709Mi MaxObsActive, 12556Mi MaxObsWired, 59622Mi MaxObs(Act+Wir+Lndry)
ARC: 2005Mi Total, 623319Ki MFU, 654020Ki MRU, 2048Ki Anon, 27462Ki Header, 745685Ki Other
     783741Ki Compressed, 3981Mi Uncompressed, 5.20:1 Ratio
Swap: 251904Mi Total, 101719Mi Used, 150185Mi Free, 40% Inuse, 3432Ki In, 3064Ki Out, 101719Mi MaxObsUsed, 101737Mi MaxObs(Act+Lndry+SwapUsed), 109816Mi MaxObs(Act+Wir+Lndry+SwapUsed)

(Based on the 20:30:57 time shown, it had been hung up for over
2 hours when I got to it.)

There were no console messages. /var/log/messages had its
last message at 18:57:52. No out-of-swap or such
messages.


I did get a dump via the db> prompt.


===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)