On Oct 20, 2012, at 1:02 PM, Andriy Gapon <a...@freebsd.org> wrote:

> Author: avg
> Date: Sat Oct 20 10:02:18 2012
> New Revision: 241773
> URL: http://svn.freebsd.org/changeset/base/241773
> 
> Log:
>  zfs: wait in arc_lowmem only if curproc == pageproc
> 
>  ... otherwise the current thread might be holding ARC locks and thus run
>  into a deadlock.  This happens, for example, when a thread does memory
>  allocation in the ARC code and runs into KVA shortage.
>  Also, it really makes the most sense to wait in pageproc, so that the
>  results of ARC reclamation are seen before the page cache is acted upon.
>  In other cases where vm_lowmem is invoked, e.g. on KVA space shortage,
>  the callers perform multiple attempts (up to 8) and wait for rather
>  long intervals between them (up to 4 seconds), so ARC reclaim results
>  should become visible even without explicit waiting on the ARC thread.
> 
>  Note that this is not a critical issue for typical ZFS usages where KVA
>  space should already be large enough.  On amd64 systems setting KVA size
>  to twice the physical memory size is known to mitigate KVA fragmentation
>  issues in practice.
> 
>  Side note: perhaps vm_lowmem 'how' parameter should be used to
>  differentiate between causes of the event.
> 
>  Reported by: Nikolay Denev <nde...@gmail.com>
>  MFC after:   19 days
> 
> Modified:
>  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c

Thanks!
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to