mirror_zfs/module
Brian Behlendorf 7cb67b45f3 Add direct+indirect ARC reclaim
Under OpenSolaris all memory reclaim is done asyncronously.  Under
Linux memory reclaim is done asynchronously _and_ synchronously.
When a process allocates memory with GFP_KERNEL it explicitly allows
the kernel to do reclaim on its behalf to satify the allocation.
If that GFP_KERNEL allocation fails the kernel may take more drastic
measures to reclaim the memory such as killing user space processes.

This was observed to happen with ZFS because the ARC could consume
a large fraction of the system memory but no synchronous reclaim
could be performed on it.  The result was GFP_KERNEL allocations
could fail resulting in OOM events, and only moments latter the
arc_reclaim thread would free unused memory from the ARC.

This change leaves the arc_thread in place to manage the fundamental
ARC behavior.  But it adds a synchronous (direct) reclaim path for
the ARC which can be called when memory is badly needed.  It also
adds an asynchronous (indirect) reclaim path which is called
much more frequently to prune the ARC slab caches.
2011-04-07 09:52:10 -07:00
..
avl Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
nvpair Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
unicode Support custom build directories and move includes 2010-09-08 12:38:56 -07:00
zcommon Add basic uio support 2011-02-10 09:21:43 -08:00
zfs Add direct+indirect ARC reclaim 2011-04-07 09:52:10 -07:00
zpios Linux 2.6.36 compat, use fops->unlocked_ioctl() 2010-11-10 17:01:08 -08:00
.gitignore Add .gitignore files to exclude build products 2010-01-08 11:35:17 -08:00
Makefile.in Fix make distclean for `./configure --with-config=user 2011-04-05 13:33:28 -07:00