1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00
samba-mirror/lib
Volker Lendecke 3034a5a62b tdb: Reduce freelist contention
In a metadata-intensive benchmark we have seen the locking.tdb freelist to be
one of the central contention points. This patch removes most of the contention
on the freelist. Ages ago we already reduced freelist contention by using the
even much older DEAD records: If TDB_VOLATILE is set, don't directly put
deleted records on the freelist, but just mark a few of them just as DEAD. The
next new record can them re-use that space without consulting the freelist.

This patch builds upon the DEAD records: If we need space and the freelist is
busy, instead of doing a blocking wait on the freelist, start looking into
other chains for DEAD records and steal them from there. This way every hash
chain becomes a small freelist. Just wander around the hash chains as long as
the freelist is still busy.

With this patch and the tdb mutex patch (following hopefully some time soon)
you can see a heavily busy clustered smbd run without locking.tdb futex
syscalls.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
2014-03-18 13:42:10 +01:00
..
addns lib/addns: remove compiler warnings 2012-11-13 22:14:14 +11:00
async_req CVE-2013-4408:async_sock: add some overflow detection to read_packet_handler() 2013-12-09 07:05:45 +01:00
ccan build: find FILE_OFFSET_BITS via array 2014-02-18 23:18:32 +01:00
compression lib/compression: fix a compiler warnings 2013-12-12 14:21:26 -08:00
crypto lib: Fix strict-aliasing warning in md5 code. 2014-01-09 20:42:54 +01:00
dbwrap dbwrap: completely check validity of lock order in dbwrap_check_lock_order() 2014-02-07 16:06:07 +01:00
dnspython dnspython: Update to latest upstream snapshot. 2011-08-27 17:40:39 +02:00
iniparser iniparser: Fix CID 241908 Copy into fixed size buffer 2013-11-11 21:04:08 +01:00
iniparser_build build: Remove autoconf build system 2013-05-28 12:17:10 +10:00
krb5_wrap krb5_wrap: Move function declaration outside the function. 2013-12-06 01:14:09 +01:00
ldb ldb: pass module init errors back to the caller 2014-02-05 08:42:25 +01:00
ldb-samba lib/ldb-samba: add more attributes with LDB_SYNTAX_SAMBA_GUID 2014-02-11 16:02:13 +01:00
nss_wrapper build: Remove autoconf build system 2013-05-28 12:17:10 +10:00
ntdb samba:python - Py_RETURN_NONE remove compatibility code for releases < 2.4 2014-01-09 16:27:47 +01:00
param param: remove lp_dnsdomain from s3 2014-02-20 10:11:24 +13:00
pep8 Add pep8. 2011-12-08 22:12:00 +01:00
popt lib/popt: Patch memory leak in popthelp.c 2014-03-13 21:45:12 +01:00
replace waf:lib/replace fix iconv checks on HP/UX 2014-02-13 02:01:03 +01:00
smbconf libsmbconf: add smbconf_create_set_share 2013-05-28 18:12:26 +02:00
socket Fix bug # 9666 - Broken filtering of link-local addresses. 2013-02-28 20:56:57 +01:00
socket_wrapper samba:python - Py_RETURN_NONE remove compatibility code for releases < 2.4 2014-01-09 16:27:47 +01:00
subunit lib/subunit/README: Fix typo. 2013-05-15 21:04:41 -07:00
talloc Add a basic guide on pytalloc. 2013-11-28 02:24:45 +01:00
tdb tdb: Reduce freelist contention 2014-03-18 13:42:10 +01:00
tdb_compat ccan: we're subsystems, not a library. 2012-06-29 06:22:44 +02:00
tdb_wrap tdb_util: Fix whitespace 2013-12-17 01:57:12 +01:00
tdr tdr: Strip trailing whitespace. 2012-12-15 16:04:26 +01:00
testtools lib/testtools/testtools/tests/test_testresult.py: Fix typos. 2013-05-15 21:04:41 -07:00
tevent tevent: version 0.9.21 2014-01-17 12:38:08 +01:00
torture pkgconfig: Do not hardcode library version numbers in pc files. 2013-08-22 20:48:44 +02:00
tsocket tsocket: Pass the full port number to getaddrinfo(). 2013-07-01 21:10:53 +02:00
uid_wrapper build: Remove autoconf build system 2013-05-28 12:17:10 +10:00
util iconv: Use a static buffer in iconf not to spoil the talloc_pool 2013-12-14 10:06:28 +01:00
zlib build: Remove autoconf build system 2013-05-28 12:17:10 +10:00
README
update-external.sh Add pep8. 2011-12-08 22:12:00 +01:00
wscript_build build: provide tevent-util as a public library 2011-08-08 13:34:06 +02: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