1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-12 09:18:10 +03:00
samba-mirror/lib
Rusty Russell 11ab43084b tdb: workaround starvation problem in locking entire database.
We saw tdb_lockall() take 71 seconds under heavy load; this is because Linux
(at least) doesn't prevent new small locks being obtained while we're waiting
for a big log.

The workaround is to do divide and conquer using non-blocking chainlocks: if
we get down to a single chain we block.  Using a simple test program where
children did "hold lock for 100ms, sleep for 1 second" the time to do
tdb_lockall() dropped signifiantly.  There are ln(hashsize) locks taken in
the contended case, but that's slow anyway.

More analysis is given in my blog at http://rusty.ozlabs.org/?p=120

This may also help transactions, though in that case it's the initial
read lock which uses this gradual locking routine; the update-to-write-lock
code is separate and still tries to update in one go.

Even though ABI doesn't change, minor version bumped so behavior change
can be easily detected.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2010-08-14 02:31:22 +09:30
..
async_req s4-waf: inline LIBREPLACE_NETWORK into 'replace' 2010-04-12 09:13:43 +02:00
compression Spelling fixes for lib/compression. 2010-02-22 21:45:33 +01:00
crypto lib/crypto: only include what is needed. 2010-06-16 18:58:04 +02:00
dnspython s4-python: Move dnspython to lib/, like the other Python modules 2010-03-29 18:05:29 +02:00
iniparser s4 nss_switch: fix build problem on computer without the iniparser 2010-07-17 20:10:11 +04:00
iniparser_build s4: create ../lib/iniparser_build/config.m4 2010-03-11 13:31:37 +01:00
nss_wrapper nss_wrapper: Fixed a possible NULL pointer problem. 2010-06-28 10:18:12 +02:00
popt s4-waf: sanitize library names like the old build system did, only add 2010-05-31 03:28:42 +02:00
replace tdb: add TDB_DEPS variable filled with required libraries 2010-08-13 14:57:44 +02:00
smbconf smbconf: only include smbconf headers where needed. 2010-05-18 10:36:33 +02:00
socket_wrapper s4-waf: fixed target group for SOCKET_WRAPPER 2010-05-03 17:16:47 +02:00
subunit s4-python: python is not always in /usr/bin 2010-06-24 18:46:57 +10:00
talloc wafsamba: Fix typo: noextenion -> noextension. 2010-06-19 12:10:29 +02:00
tdb tdb: workaround starvation problem in locking entire database. 2010-08-14 02:31:22 +09:30
tdr Finish removal of iconv_convenience in public API's. 2010-05-18 11:45:30 +02:00
testtools testtools: Fix included testtools, for systems that don't have it. 2010-03-31 04:19:36 +02:00
tevent wafsamba: Fix typo: noextenion -> noextension. 2010-06-19 12:10:29 +02:00
torture s4-loadparm: 2nd half of lp_ to lpcfg_ conversion 2010-07-16 18:24:27 +10:00
tsocket tsocket: Fix some unreachable code 2010-07-11 18:14:33 +02:00
uid_wrapper s4-waf: put the --xxx-wrapper options in 'developer options' group 2010-04-18 15:00:37 +10:00
util lib: added samba-util.pc creation 2010-07-26 11:19:59 +10:00
zlib lib/zlib/wscript: fix system zlib detection 2010-04-24 13:19:23 +02:00
README subunit: Update to newer upstream version. 2010-03-29 18:05:29 +02:00
update-external.sh update-external: Support updating dnspython. 2010-04-07 22:53:38 +02:00
wscript_build build: allow the waf build to work with python 3.0 and 3.1 2010-04-08 07:46:39 +10:00

compression - Various compression algorithms (MSZIP, lzxpress)
dnspython - Python module for working with DNS.
nss_wrapper - Wrapper for the user and group NSS API allowing the use 
              of other data sources.
popt - Command-line option parsing library
replace - Provides replacements for standard (POSIX, C99) functions 
          not provided by the host platform.
socket_wrapper - Wrapper library allowing TCP/IP traffic to be redirected 
                 over Unix domain sockets.
subunit - Utilities and bindings for working with the Subunit test result 
          reporting protocol.
talloc - Hierarchical pool based memory allocator 
tdb - Simple but fast key/value database library, supporting multiple writers
torture - Simple unit testing helper library