swap_pager: cannot allocate bio

From: Chris Ross <cross+freebsd_at_distal.com>
Date: Thu, 11 Nov 2021 04:35:35 UTC
Hey all.  I have a system that I’m trying to do some intensive CPU and I/O on.  FreeBSD 13.0-RELEASE, amd64, 128GB RAM, hardware RAID1 OS volume, and a large (40TB) zpool where most of the I/O is happening.

Initially, it was failing for me because it was running out of swap space.  It had only the normal small (4-8G) swap partition, so I resized the filesystems on the root disk and now have 400+GB swap.  The system had frozen up and I wasn’t able to log in.  When I go to the console, I find a long list of:

swap_pager: cannot allocate bio

lines.  I was able to log into the console as root and pstat -s shows the swap minimally used (7.5GB used).  Attempting a “zpool status” at that point locked up.  I don’t know if the problem is the memory subsystem, or zfs.

But, based on the error, is there perhaps some kernel parameter I can tune that might prevent the swap pager from encountering that error?

                     - Chris