ZFS "stalls" -- and maybe we should be talking about defaults?

Jeremy Chadwick jdc at koitsu.org
Wed Mar 6 05:16:15 UTC 2013


On Tue, Mar 05, 2013 at 09:08:09PM -0800, Jeremy Chadwick wrote:
> > > * How long the stall is in duration (ex. if there's some way to
> > >   roughly calculate this using "date" in a shell script)
> > They're variable.  Some last fractions of a second and are not really
> > all that noticeable unless you happen to be paying CLOSE attention. 
> > Some last a few (5 or so) seconds.  The really bad ones last long enough
> > that the kernel throws the message "swap_pager: indefinite wait buffer".
> 
> The message "swap_pager: indefinite wait buffer" indicates that some
> part of the VM is trying to offload pages of memory to swap via standard
> I/O write requests, and those writes have not come back within kern.hz*20
> seconds.  That's a very, very long time.

Two clarification points:

1. The timeout value is passed to msleep(9) and is literally kern.hz*20.
Per sys/vm/swap_pager.c:

   1216                 if (msleep(mreq, VM_OBJECT_MTX(object), PSWP, "swread", hz*20)) {
   1217                         printf(
   1218 "swap_pager: indefinite wait buffer: bufobj: %p, blkno: %jd, size: %ld\n",
   1219                             bp->b_bufobj, (intmax_t)bp->b_blkno, bp->b_bcount);

How that's interpreted is documented in msleep(9):

     The parameter timo specifies a timeout for the sleep.  If timo is
     not 0, then the thread will sleep for at most timo / hz seconds.
     If the timeout expires, then the sleep function will return
     EWOULDBLOCK.

2. The message appears to be for swap I/O *reads*, not writes; at least
that's what the "swread" STATE string (you know, what you see in
top(1)) implies.

-- 
| Jeremy Chadwick                                   jdc at koitsu.org |
| UNIX Systems Administrator                http://jdc.koitsu.org/ |
| Mountain View, CA, US                                            |
| Making life hard for others since 1977.             PGP 4BD6C0CB |


More information about the freebsd-stable mailing list