OpenZFS on Linux and FreeBSD
Go to file
Ned Bass 3c6ed5410b Taskq locking optimizations
Testing has shown that tq->tq_lock can be highly contended when a
large number of small work items are dispatched.  The lock hold time
is reduced by the following changes:

1) Use exclusive threads in the work_waitq

When a single work item is dispatched we only need to wake a single
thread to service it.  The current implementation uses non-exclusive
threads so all threads are woken when the dispatcher calls wake_up().
If a large number of threads are in the queue this overhead can become
non-negligible.

2) Conditionally add/remove threads from work waitq

Taskq threads need only add themselves to the work wait queue if
there are no pending work items.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #32
2012-01-19 14:42:49 -08:00
cmd Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -08:00
config Run SPL_AC_PACMAN only if $VENDOR is "arch" 2012-01-13 09:08:12 -08:00
include Add the release component to headers 2012-01-18 11:06:26 -08:00
lib Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -08:00
module Taskq locking optimizations 2012-01-19 14:42:49 -08:00
patches Reimplement rwlocks for Linux lock profiling/analysis. 2009-09-18 16:09:47 -07:00
scripts Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -08:00
.gitignore Ignore unsigned module build products 2010-03-11 14:29:17 -08:00
AUTHORS Public Release Prep 2010-05-17 15:18:00 -07:00
COPYING Public Release Prep 2010-05-17 15:18:00 -07:00
ChangeLog Prep for spl-0.5.0 tag 2010-08-13 09:33:50 -07:00
DISCLAIMER Public Release Prep 2010-05-17 15:18:00 -07:00
INSTALL Public Release Prep 2010-05-17 15:18:00 -07:00
META Prep spl-0.6.0-rc6 tag 2011-10-06 14:58:09 -07:00
Makefile.am Add the release component to headers 2012-01-18 11:06:26 -08:00
Makefile.in Add the release component to headers 2012-01-18 11:06:26 -08:00
PKGBUILD-spl-modules.in Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -08:00
PKGBUILD-spl.in Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -08:00
README.markdown Fix markdown rendering 2010-09-15 09:05:34 -07:00
autogen.sh Public Release Prep 2010-05-17 15:18:00 -07:00
configure Run SPL_AC_PACMAN only if $VENDOR is "arch" 2012-01-13 09:08:12 -08:00
configure.ac Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -08:00
spl-modules.spec.in Fix rpm dependencies 2012-01-18 11:24:36 -08:00
spl.spec.in Fix rpm dependencies 2012-01-18 11:24:36 -08:00
spl_config.h.in Linux 3.2 compat: rw_semaphore.wait_lock is raw 2012-01-11 16:28:05 -08:00

README.markdown

The Solaris Porting Layer (SPL) is a Linux kernel module which provides many of the Solaris kernel APIs. This shim layer makes it possible to run Solaris kernel code in the Linux kernel with relatively minimal modification. This can be particularly useful when you want to track upstream Solaris development closely and dont want the overhead of maintaining a large patch which converts Solaris primitives to Linux primitives.

To build packages for your distribution:

$ ./configure
$ make pkg

Full documentation for building, configuring, and using the SPL can be found at: http://zfsonlinux.org