freebsd with flexible iflib nic queues
Go to file
Chunwei Chen 8e71ab99dc Batch free zpl_posix_acl_release
Currently every calls to zpl_posix_acl_release will schedule a delayed task,
and each delayed task will add a timer. This used to be fine except for
possibly bad performance impact.

However, in Linux 4.8, a new timer wheel implementation[1] is introduced. In
this new implementation, the larger the delay, the less accuracy the timer is.
So when we have a flood of timer from zpl_posix_acl_release, they will expire
at the same time. Couple with the fact that task_expire will do linear search
with lock held. This causes an extreme amount of contention inside interrupt
and would actually lockup the system.

We fix this by doing batch free to prevent a flood of delayed task. Every call
to zpl_posix_acl_release will put the posix_acl to be freed on a lockless
list. Every batch window, 1 sec, the zpl_posix_acl_free will fire up and free
every posix_acl that passed the grace period on the list. This way, we only
have one delayed task every second.

[1] https://lwn.net/Articles/646950/

Signed-off-by: Chunwei Chen <david.chen@osnexus.com>
2016-11-07 11:04:44 -08:00
cmd Allow autoreplace even when enclosure LED sysfs entries don't exist 2016-11-04 13:34:13 -07:00
config Replace ISAINFO with is_32bit function 2016-11-07 10:26:17 -08:00
contrib Update .gitignore 2016-10-19 14:29:33 -07:00
etc Change /etc/mtab to /proc/self/mounts 2016-09-20 10:07:58 -07:00
include Batch free zpl_posix_acl_release 2016-11-07 11:04:44 -08:00
lib Fix 'zpool import' detection issues 2016-11-07 10:28:57 -08:00
man Add parity generation/rebuild using AVX-512 for x86-64 2016-11-02 12:40:23 -07:00
module Batch free zpl_posix_acl_release 2016-11-07 11:04:44 -08:00
rpm Process all systemd services through the systemd scriptlets 2016-11-02 10:56:36 -07:00
scripts Add paxcheck make lint target 2016-10-28 16:10:00 -07:00
tests Replace ISAINFO with is_32bit function 2016-11-07 10:26:17 -08:00
udev Allow partition aliases in vdev_id.conf (#5266) 2016-10-14 16:11:16 -07:00
.gitignore Update .gitignore 2016-10-19 14:29:33 -07:00
.gitmodules Add zimport.sh compatibility test script 2014-02-21 12:10:31 -08:00
AUTHORS Add a missing > to AUTHORS 2014-09-02 14:18:53 -07:00
autogen.sh build: do not call boilerplate ourself 2013-04-02 10:55:20 -07:00
configure.ac Add support for O_TMPFILE 2016-11-04 10:46:40 -07:00
copy-builtin Illumos Crypto Port module added to enable native encryption in zfs 2016-07-20 10:43:30 -07:00
COPYRIGHT Update ZED copyright boilerplate 2015-05-11 15:07:00 -07:00
DISCLAIMER Fix minor typos and update marketing copy. 2013-03-21 12:51:06 -07:00
Makefile.am Add paxcheck make lint target 2016-10-28 16:10:00 -07:00
META Tag 0.7.0-rc2 2016-10-26 10:36:33 -07:00
OPENSOLARIS.LICENSE Add CDDL license file 2008-12-01 14:49:34 -08:00
README.markdown Fix minor typos and update marketing copy. 2013-03-21 12:51:06 -07:00
TEST Add the ZFS Test Suite 2016-03-16 13:46:16 -07:00
zfs-script-config.sh.in Introduce tests for python scripts 2016-10-06 13:11:57 -07:00
zfs.release.in Move zfs.release generation to configure step 2012-07-12 12:22:51 -07:00

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