Native ZFS for Linux
C Shell Assembly M4 Python Makefile Other
Pull request Compare This branch is even with zfsonlinux:master.
Latest commit 25458cb Jul 13, 2016 @dweeezil dweeezil committed with Limit the amount of dnode metadata in the ARC
Metadata-intensive workloads can cause the ARC to become permanently
filled with dnode_t objects as they're pinned by the VFS layer.
Subsequent data-intensive workloads may only benefit from about
25% of the potential ARC (arc_c_max - arc_meta_limit).

In order to help track metadata usage more precisely, the other_size
metadata arcstat has replaced with dbuf_size, dnode_size and bonus_size.

The new zfs_arc_dnode_limit tunable, which defaults to 10% of
zfs_arc_meta_limit, defines the minimum number of bytes which is desirable
to be consumed by dnodes.  Attempts to evict non-metadata will trigger
async prune tasks if the space used by dnodes exceeds this limit.

The new zfs_arc_dnode_reduce_percent tunable specifies the amount by
which the excess dnode space is attempted to be pruned as a percentage of
the amount by which zfs_arc_dnode_limit is being exceeded.  By default,
it tries to unpin 10% of the dnodes.

The problem of dnode metadata pinning was observed with the following
testing procedure (in this example, zfs_arc_max is set to 4GiB):

    - Create a large number of small files until arc_meta_used exceeds
      arc_meta_limit (3GiB with default tuning) and arc_prune
      starts increasing.

    - Create a 3GiB file with dd.  Observe arc_mata_used.  It will still
      be around 3GiB.

    - Repeatedly read the 3GiB file and observe arc_meta_limit as before.
      It will continue to stay around 3GiB.

With this modification, space for the 3GiB file is gradually made
available as subsequent demands on the ARC are made.  The previous behavior
can be restored by setting zfs_arc_dnode_limit to the same value as the
zfs_arc_meta_limit.

Signed-off-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #4345
Issue #4512
Issue #4773
Closes #4858
Failed to load latest commit information.
cmd Fixes and enhancements of SIMD raidz parity Jul 19, 2016
config Fix sync behavior for disk vdevs Jul 25, 2016
contrib Fix the test to use the variable May 14, 2016
etc Systemd configuration fixes May 27, 2016
include Limit the amount of dnode metadata in the ARC Jul 25, 2016
lib Illumos Crypto Port module added to enable native encryption in zfs Jul 20, 2016
man Limit the amount of dnode metadata in the ARC Jul 25, 2016
module Limit the amount of dnode metadata in the ARC Jul 25, 2016
rpm Add missing RPM BuildRequires May 23, 2016
scripts zloop: print backtrace from core files Jul 25, 2016
tests Enable zpool_upgrade test cases Jul 14, 2016
udev Add `zfs allow` and `zfs unallow` support Jun 7, 2016
.gitignore Illumos Crypto Port module added to enable native encryption in zfs Jul 20, 2016
.gitmodules Add zimport.sh compatibility test script Feb 21, 2014
AUTHORS Add a missing > to AUTHORS Sep 2, 2014
COPYRIGHT Update ZED copyright boilerplate May 11, 2015
DISCLAIMER Fix minor typos and update marketing copy. Mar 21, 2013
META Tag zfs-0.6.5 Sep 11, 2015
Makefile.am Add the ZFS Test Suite Mar 16, 2016
OPENSOLARIS.LICENSE Add CDDL license file Dec 1, 2008
README.markdown Fix minor typos and update marketing copy. Mar 21, 2013
TEST Add the ZFS Test Suite Mar 16, 2016
autogen.sh build: do not call boilerplate ourself Apr 2, 2013
configure.ac Illumos Crypto Port module added to enable native encryption in zfs Jul 20, 2016
copy-builtin Illumos Crypto Port module added to enable native encryption in zfs Jul 20, 2016
zfs-script-config.sh.in Illumos Crypto Port module added to enable native encryption in zfs Jul 20, 2016
zfs.release.in Move zfs.release generation to configure step Jul 12, 2012

README.markdown

Native ZFS for Linux!

ZFS is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the Illumos community.

ZFS on Linux, which is also known as ZoL, is currently feature complete. It includes fully functional and stable SPA, DMU, ZVOL, and ZPL layers.

Full documentation for installing ZoL on your favorite Linux distribution can be found at: http://zfsonlinux.org