Re: Restraining poudriere

From: Michael Gmelin <freebsd_at_grem.de>
Date: Sat, 12 Jun 2021 17:36:48 UTC

> On 12. Jun 2021, at 19:31, bob prohaska <fbsd@www.zefox.net> wrote:
> 
> 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?

Yes, see poudriere.conf:

# parallel build support.
#
# By default poudriere uses hw.ncpu to determine the number of builders.
# You can override this default by changing PARALLEL_JOBS here, or
# by specifying the -J flag to bulk/testport.
#
# Example to define PARALLEL_JOBS to one single job
# PARALLEL_JOBS=1

-m

> 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
>