mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
3034a5a62b
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> |
||
---|---|---|
.. | ||
addns | ||
async_req | ||
ccan | ||
compression | ||
crypto | ||
dbwrap | ||
dnspython | ||
iniparser | ||
iniparser_build | ||
krb5_wrap | ||
ldb | ||
ldb-samba | ||
nss_wrapper | ||
ntdb | ||
param | ||
pep8 | ||
popt | ||
replace | ||
smbconf | ||
socket | ||
socket_wrapper | ||
subunit | ||
talloc | ||
tdb | ||
tdb_compat | ||
tdb_wrap | ||
tdr | ||
testtools | ||
tevent | ||
torture | ||
tsocket | ||
uid_wrapper | ||
util | ||
zlib | ||
README | ||
update-external.sh | ||
wscript_build |
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