svn commit: r241773 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Nikolay Denev
ndenev at gmail.com
Sat Oct 20 10:24:28 UTC 2012
On Oct 20, 2012, at 1:02 PM, Andriy Gapon <avg at 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 <ndenev at gmail.com>
> MFC after: 19 days
>
> Modified:
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
Thanks!
More information about the svn-src-all
mailing list