Re: swap_pager: cannot allocate bio

From: Andriy Gapon <avg_at_FreeBSD.org>
Date: Mon, 15 Nov 2021 14:20:26 UTC
On 15/11/2021 05:26, Chris Ross wrote:
> A procstat -kka output is available (208kb of text, 1441 lines) at
> https://pastebin.com/SvDcvRvb

    67 100542 pagedaemon          dom0                mi_switch+0xc1 
_cv_wait+0xf2 arc_wait_for_eviction+0x1df arc_lowmem+0xca 
vm_pageout_worker+0x3c4 vm_pageout+0x1d7 fork_exit+0x8a fork_trampoline+0xe

I was always of an opinion that waiting for the ARC reclaim in arc_lowmem was 
wrong.  This shows an example of why it is so.

> An ssh of a top command completed and shows:
> 
> last pid: 91551;  load averages:  0.00,  0.02,  0.30  up 2+00:19:33    22:23:15
> 40 processes:  1 running, 38 sleeping, 1 zombie
> CPU:  3.9% user,  0.0% nice,  0.9% system,  0.0% interrupt, 95.2% idle
> Mem: 58G Active, 210M Inact, 1989M Laundry, 52G Wired, 1427M Buf, 12G Free

To me it looks like there is still plenty of free memory.

I am not sure why vm_wait_domain (called by vm_page_alloc_noobj_domain) is not 
waking up.
Perhaps this is some sort of a NUMA related issue where one memory domain is 
exhausted while other(s) still have  a lot of memory.
Or maybe it's something else but it must be some sort of a bug.

> ARC: 48G Total, 10G MFU, 38G MRU, 128K Anon, 106M Header, 23M Other
>       46G Compressed, 46G Uncompressed, 1.00:1 Ratio
> Swap: 425G Total, 3487M Used, 422G Free


-- 
Andriy Gapon