Restraining poudriere

From: bob prohaska <fbsd_at_www.zefox.net>
Date: Sat, 12 Jun 2021 17:29:57 UTC
In playing with poudriere on raspberry pi 3 and 4 it seems to
work well on the 8 GB Pi4 but is over-optimistic on the 1 GB Pi3.

Can poudriere be configured to tackle packages one at a time?
For example, it started to build both sqlite8 and llvm10 at the
same time. I know the setup in this example  can finish llvm 
(just barely) with 4 threads and turning off OOMA with 
vm.pfault_oom_attempts="-1"
in /boot/loader.conf. The intervals of high swap use are generally
quite brief, struggling through them seems to reward use of 4 threads.

With OOMA turned off and 6 GB of swap a poudriere run on 
14.0-CURRENT #0 main-n247255-f20893853e8: Wed Jun  9 18:29:07 PDT 2021
stalled with

login: swap blk zone exhausted, increase kern.maxswzone
swblk zone ok
swap blk zone exhausted, increase kern.maxswzone
swblk zone ok
swap blk zone exhausted, increase kern.maxswzone
swblk zone ok
swap blk zone exhausted, increase kern.maxswzone
swblk zone ok
swap blk zone exhausted, increase kern.maxswzone
swblk zone ok
swap blk zone exhausted, increase kern.maxswzone
swblk zone ok
swap blk zone exhausted, increase kern.maxswzone
swblk zone ok
swap blk zone exhausted, increase kern.maxswzone
swblk zone ok
swap blk zone exhausted, increase kern.maxswzone
Jun 12 09:17:09 www kernel: pid 1044 (sh), jid 0, uid 0, was killed: out of swap space
Jun 12 09:17:40 www kernel: pid 2145 (cc), jid 23, uid 65534, was killed: out of swap space
Jun 12 09:17:40 www syslogd: last message repeated 1 times
Jun 12 09:18:38 www kernel: pid 2179 (sh), jid 0, uid 0, was killed: out of swap space
swblk zone ok
swap blk zone exhausted, increase kern.maxswzone
Jun 12 09:20:00 www kernel: pid 2180 (cron), jid 0, uid 0, was killed: out of swap space
Jun 12 09:22:13 www kernel: pid 2181 (sshd), jid 0, uid 0, was killed: out of swap space

Despite killing processes, the machine remains unresponsive short of calling
the debugger. A backtrace reports

KDB: enter: Break to debugger
[ thread pid 11 tid 100003 ]
Stopped at      kdb_alt_break_internal+0x1a8:   undefined       f904411f
db> bt
Tracing pid 11 tid 100003 td 0xffffa00000bf4580
db_trace_self() at db_trace_self
db_stack_trace() at db_stack_trace+0x11c
db_command() at db_command+0x244
db_command_loop() at db_command_loop+0x54
db_trap() at db_trap+0xf8
kdb_trap() at kdb_trap+0x1c4
handle_el1h_sync() at handle_el1h_sync+0x74
--- exception, esr 0xf2000000
kdb_alt_break_internal() at kdb_alt_break_internal+0x1a8
kdb_alt_break() at kdb_alt_break+0xc
uart_intr_rxready() at uart_intr_rxready+0x88
uart_intr() at uart_intr+0x128
intr_event_handle() at intr_event_handle+0xf4
intr_isrc_dispatch() at intr_isrc_dispatch+0x74
bcm2835_intc_intr() at bcm2835_intc_intr+0xa0
intr_event_handle() at intr_event_handle+0xf4
intr_isrc_dispatch() at intr_isrc_dispatch+0x74
bcm_lintc_intr() at bcm_lintc_intr+0x1d4
intr_irq_handler() at intr_irq_handler+0x80
handle_el1h_irq() at handle_el1h_irq+0x70
--- interrupt
cpu_idle() at cpu_idle+0x74
sched_idletd() at sched_idletd+0x164
fork_exit() at fork_exit+0x74
fork_trampoline() at fork_trampoline+0x14
db>  

Persuading poudriere to bite off packages one at a time would help, 
if it's possible. I'm game to try increasing kern.maxswzone, but
given the Pi3's i/o limitations that seems unlikely to help much.

Thanks for reading!

bob prohaska