OpenZFS on Linux and FreeBSD
Go to file
Brian Behlendorf 82387586af Optimize lowest outstanding taskqid calculation in taskq_lowest_id()
In the initial version of taskq_lowest_id() the entire pending and
work list was locked under the tq->tq_lock to determine the lowest
outstanding taskqid.  At the time this done because I was rushed
and wanted to make sure it was right... fast was secondary.  Well now
fast is important too so I carefully thought through the pending
and work list management and convinced myself it is safe and correct
to simply check the first entry.  I added a large comment to the source
to explain this.  But basically as long as we are careful to ensure the
pending and work list stay sorted this is safe and fast.

The motivation for this chance was that I was observing as much as
10% of the total CPU time go to waiting on the tq->tq_lock when the
pending list was long.  This resolves that problems and frees up
that CPU time for something useful.
2010-01-04 15:52:26 -08:00
cmd Simplify rpm build rules, added config/rpm.am. 2009-07-01 14:37:44 -07:00
config Atomic64 compatibility for 32-bit systems without kernel support. 2009-12-04 15:54:12 -08:00
include Check for changed gaurd macro in 2.6.28+ for rwsem implementation. 2009-12-17 11:57:44 -08:00
lib Simplify rpm build rules, added config/rpm.am. 2009-07-01 14:37:44 -07:00
module Optimize lowest outstanding taskqid calculation in taskq_lowest_id() 2010-01-04 15:52:26 -08:00
patches Reimplement rwlocks for Linux lock profiling/analysis. 2009-09-18 16:09:47 -07:00
scripts Simplify rpm build rules, added config/rpm.am. 2009-07-01 14:37:44 -07:00
AUTHORS Prep for spl-0.4.3 tag. 2009-03-20 14:48:30 -07:00
COPYING Go through and add a header with the proper UCRL number. 2008-05-26 04:38:26 +00:00
ChangeLog Prep for 0.4.7 tag, updated META and ChangeLog. 2009-11-20 16:52:29 -08:00
DISCLAIMER Go through and add a header with the proper UCRL number. 2008-05-26 04:38:26 +00:00
INSTALL Trivial commit to remove whitespace 2008-07-09 19:11:29 +00:00
META Prep for 0.4.7 tag, updated META and ChangeLog. 2009-11-20 16:52:29 -08:00
Makefile.am Ensure *.order and *.markers build products are removed by distclean rule. 2009-11-20 16:01:00 -08:00
Makefile.in Ensure *.order and *.markers build products are removed by distclean rule. 2009-11-20 16:01:00 -08:00
autogen.sh Packaging improvements for RHEL and SLES 2009-06-16 10:44:59 -07:00
configure Atomic64 compatibility for 32-bit systems without kernel support. 2009-12-04 15:54:12 -08:00
configure.ac Simplify rpm build rules, added config/rpm.am. 2009-07-01 14:37:44 -07:00
spl-modules.spec.in spl-modules-devel package must depend on the exact version of kernel 2009-11-24 15:24:36 -08:00
spl.spec.in Remove usage of the __id_u macro for portability. 2009-10-05 12:51:58 -07:00
spl_config.h.in Autoconf --enable-debug-* cleanup 2009-10-30 13:58:51 -07:00
spl_unconfig.h Allow spl_config.h to be included by dependant packages 2009-03-17 14:55:59 -07:00